我有这个奇怪的问题。
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);
答案 0 :(得分:3)
如果你想让$ smt键成为$ iDate的值,你必须删除撇号,即
$smt[$iDate]=$iStopID;
答案 1 :(得分:1)
数组键是唯一的。在while循环中,您将$ iStopID分配给您的数组,并使用字符串'$ iDate'作为键:
$smt['$iDate'] = $iStopID;
问题是您每次都将键设置为字符串'$ iDate'而不是变量$ iDate的内容。因此,您只获得一个密钥(因为它们是唯一的)。试试这个:
$smt[$iDate] = $iStopID;
希望这有帮助!