MySQLi查询到Array - 循环数组返回空结果

时间:2012-11-28 05:04:37

标签: php arrays mysqli

所以,这是我遇到的一件奇怪的事情,也许是因为深夜,或者我只是遗漏了一些基本的东西。我必须将查询发送到数组而不是循环查询,因为其他API调用可以发送数组而不是来自数据库。该查询也会返回多个项目。代码:

$result = $db->query("SELECT ID FROM tblTemp WHERE FOREIGN_KEY='2'");
$tmp = $result->fetch_array(MYSQLI_BOTH);        

for($i = count($tmp); $i > 0; --$i) {
echo '<option value="'.$tmp[$i-1].'">Item '.$i.'</option>';
}

所以,我只是想把数组项目放到HTML选择中。这适用于传递的$ tmp数组;但是,使用查询时会发生的情况是,只有第一条记录在select中填充。添加了正确数量的项目,但缺少值。 即。

<option value="">Item 2</option>
<option value="7">Item 1</option> 

编辑:PHP确实抛出一个错误:未定义的偏移量:1

2 个答案:

答案 0 :(得分:1)

您只从查询中获取一条记录,这就是为什么您有一个值并获得未定义的偏移量的原因。 在以下示例中,while循环用于从查询中获取所有结果。

$result = $db->query("SELECT ID FROM tblTemp WHERE FOREIGN_KEY='2'");
$html = "";
$i = 1;
while($tmp = $result->fetch_array(MYSQLI_BOTH)) {
    $html = '<option value="'.$tmp['ID'].'">Item '.$i.'</option>'.html;
    $i++;
}
echo $html;

答案 1 :(得分:0)

实际上,

 
  for($i = count($tmp); $i > 0; --$i) {
    echo 'Item '.$i.'';
  }
 
如果 $ tmp 返回正确的金额,

应该有效。确保 $ tmp 返回正确的数据。

希望这会有所帮助。