【问题标题】:php for statement is working only oncephp for 语句只工作一次
【发布时间】:2014-11-04 10:47:18
【问题描述】:

这是我的问题,

我有一个 php FOR 语句,无论我做什么,它只会通过它一次...我将我的 vars 检查到其中,并写入它们以确保...一切看起来都很好...但它永远不会工作...

这里是代码($user 是用我的会话变量初始化的):

for($i=0;$i<=($size);$i++){
    $test = $db->prepare("INSERT INTO `test`(`val`) VALUES ('IN!!')");
    $test->execute();
    $name = '';
    if($i==0){
        $name = $db->quote("test");
    }else{
        $name = $db->quote("number $i");
    }
    $number = $db->quote($i);
    //insert
    $query = "INSERT INTO `test`(`name`,`number`) VALUES ($name,$number)";
    $insert = $db->prepare($query);
    if($insert->execute()){
        $id = '';
        $get = $db->prepare("SELECT last_insert_id();");
        $get->execute();
        foreach($get as $myId){
            $id = $myId[0];
        }
        if(!(isRel($db,$user))){
            if(!(setIsRel($db,$user,1))){
                $error = false;
            }
        }
        if(!(hasRel($db,$etabId))){
            if(!(setHasRel($db,$id,1))){
                $error = false;
            }
        }
        if(!(buildRelationShip($db,$id,'2'))){
            $error = false;
        }
        if(!(buildRelationShip($db,$id,'3'))){
            $error = false;
        }

    }else{
        $error = false;
    }
    $check1 = '';
    $check2 = '';
    $check3 = '';
    $check4 = '';
    if(is_numeric($size)){
        $check1 = "OK";
    }
    if($i<=$size){
        $check2 = "OK";
    }
    $test = $db->prepare("INSERT INTO `test`(`val`) VALUES ('SIZE IS NUMERIC? $check1 -- I SMALLER? $check2')");
    $test->execute();
}

答案是:

IN!! SIZE IS NUMERIC? OK -- I SMALLER? OK

我哪里错了...?

感谢帮助!

(这个 PHP 代码是从一个 .ajax 请求 -jquery- 中调用的,但我认为它与此无关,因为我已经用这个做了一些类似的事情......)

SIZE 变量始终设置为 2 或 3,绝不会更小!已经检查了

编辑:

嗯,

这是 FOR 语句之前的代码:

function createStages($db,$user,$size){
    $error = true;
    $size= intval($size);

我不认为它会有所帮助..

【问题讨论】:

  • 您的$size 值是多少?我认为$size0
  • 旁注:VALUES ($name,$number) - $name 很可能不是int,所以引用它。
  • @Fred-ii- 也许这就是 $db-&gt;quote() 所做的。
  • 如果$size的原始值是"'3'",加上额外的引号,intval($size)将是0
  • intval() 返回字符串开头的整数。由于该字符串以引号而不是整数开头,因此它返回零。

标签: php jquery ajax for-loop while-loop


【解决方案1】:

听起来你的类型转换搞砸了。去掉 $size = intval($size),将 for 循环中的条件替换为 $i

【讨论】:

  • 差不多了...就在我将 $size var 发送到我的函数之前,我正在对其执行 $db->quote()...这就是为什么我的变量被用作一个字符串而不是一个整数......感谢@Everyone的帮助! (问题已解决)
猜你喜欢
  • 2012-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-22
  • 2013-09-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多