[英]Is there a way to get multiple rows in MySQLi
我目前正在做一個項目,我需要從 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 的名稱
遍歷成功的結果與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 注入持開放態度。
您可以使用一個簡單的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"];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.