我目前正在从事一个项目,该项目需要从SQL表中列的ID相同的条目中列出条目。
这是桌子:
+------+------+
|name |id |
+------+------+
|Ex1 |1 |
+------+------+
|Ex2 |1 |
+------+------+
|Ex3 |2 |
+------+------+
我尝试了以下代码:
$id = '1';
$query2 = "SELECT * FROM entries WHERE id = '$id'";
$data2=mysqli_query($link,$query2);
$row2=mysqli_fetch_array($data2);
$name = $row2["name"];
但是该代码仅返回Ex2,我希望它返回我在$ id中指定的ID的所有名称
答案 0 :(得分:1)
通过while
循环查看成功的结果。
while($row2=mysqli_fetch_array($data2)){
// echo $name = is valid syntax.
echo $name = $row2["name"] . "<br>" . "\n";
// The \n used will show clean HTML in source.
}
旁注:您可能必须使用mysqli_fetch_assoc()
而不是mysqli_fetch_array()
。
此外,这样做更安全,因为这可能会使您不愿接受SQL注入。
答案 1 :(得分:0)
您可以使用简单的foreach
循环来迭代从数据库中获取的所有结果。
此外,您应该使用带参数绑定的预备语句。
正确的代码应如下所示:
$id = '1';
$stmt = $link->prepare("SELECT * FROM entries WHERE id = ?");
$stmt->bind_param('s', $id);
$stmt->execute();
$result = $stmt->get_result();
foreach ($result as $row2) {
$name = $row2["name"];
// do something with the name
echo $name.PHP_EOL;
}
或者,如果需要,您可以将所有结果收集到一个数组中。
$allNames = [];
foreach ($result as $row2) {
$allNames[] = $row2["name"];
}