簡體   English   中英

有沒有辦法在 MySQLi 中獲取多行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM