数组仅填充最新值

时间:2013-08-13 22:21:36

标签: php mysqli

我有这个奇怪的问题。

while循环中的数组(在我的情况下是$ smt),不想填满所有30个值(我的测试查询返回了30行)。它仅包含最新值。我检查了循环,没关系。它会重复30次,num_rows也会返回30.只有当我尝试填充使用键的数组时才会发生这种情况,例如$array[$key]。例如,在循环内部打印并使用没有键操作的数组,就像它们应该的那样。

也许我错过了什么,但现在我找不到问题。

CODE:

if($res = $con->prepare($query)) {

    call_user_func_array(array($res,'bind_param'),$bind);

    if($res->execute()) {

        $res -> bind_result($iStopID,$iDate,$iTime,$iOd,$iDo,$iType);

        while ($res -> fetch()) {

            $smt['date']=$iStopID;

        }

        //test
        print_r($smt['date']);


    } else error($con->error);

    $res -> close();

} else error($con->error);

2 个答案:

答案 0 :(得分:3)

如果你想让$ smt键成为$ iDate的值,你必须删除撇号,即

$smt[$iDate]=$iStopID;

答案 1 :(得分:1)

数组键是唯一的。在while循环中,您将$ iStopID分配给您的数组,并使用字符串'$ iDate'作为键:

 $smt['$iDate'] = $iStopID;

问题是您每次都将键设置为字符串'$ iDate'而不是变量$ iDate的内容。因此,您只获得一个密钥(因为它们是唯一的)。试试这个:

 $smt[$iDate] = $iStopID;

希望这有帮助!