以下代码:
$result = $conn->query("SELECT * FROM $myTable");
while($result && ($row = $result->fetch_assoc()) && in_array($row['id'], $accessible_ids)){
// do something
}
不做任何事情,而这一点修改:
$result = $conn->query("SELECT * FROM $myTable");
while($result && ($row = $result->fetch_assoc())){
if(in_array($row['id'], $accessible_ids)){
//do something
}
}
有所作为。 $accessible_ids
来自这里:
$result = $conn->query("SELECT id FROM $someTable WHERE userID = $userID");
$accessible_ids = array();
while($result && ($row= $result->fetch_assoc())){
$accessible_ids[] = $row['id'];
}
但是:如果$accessible_ids
包含元素' 1'只有两个代码都有效。但是,$accessible_ids
包含' 2'和' 3'只有较低的代码适合我。
我只是想知道为什么这是一件事,我做了什么值得这样做。 (找到原因需要一段时间,我使用的是php 7和xampp)
更新
示例输出:
print_r($accessible_ids);
$result = $conn->query("SELECT * FROM $myTable");
while($result && ($row = $result->fetch_assoc())){
if(in_array($row['id'], $accessible_ids)){
//do something
echo '<br>';
print_r($row['id']);
}
}
产地:
Array ( [0] => 2 [1] => 3 )
2
3
答案 0 :(得分:0)
只需implode()
$accessible_ids
并传入查询。它会为您提供without
使用in_array()
;
$ids = implode(', ', $accessible_ids);
$result = $conn->query("SELECT * FROM $myTable WHERE id IN($ids)");
$row_cnt = $result->num_rows;
if($row_cnt > 0)
{
while ($row = $result->fetch_assoc()) {
// do something
}
}
使用num_rows
检查天气查询返回结果