簡體   English   中英

fetch()在while循環內不起作用

[英]fetch() won't work inside a while loop

我正在做我的拼貼項目,結果出現了問題。 我想進行一個while循環以從數據庫中獲取所有記錄。

我用於SQL語句的代碼:

$sql2 = "SELECT * FROM phones WHERE users_id = '$user_id'";
$stm2 = $db->prepare($sql2);
$stm2->execute();

我用於while循環的代碼:

<?php while ($record = $stm2->fetch()) :?>
    <div class="col-md-2">
       Some text
    </div>
<?php endwhile; ?>

該循環沒有輸出。 當我運行項目時,什么都沒有顯示。

如果我嘗試先獲取所有記錄,然后將它們var_dump取出,那就可以了。 我的意思是,我可以看到數據庫中有記錄,但是我無法在循環中使用這些記錄。

我也嘗試過此代碼,但沒有任何結果。

<?php while($record = $stm2->fetch()){
   echo '<div class="col-md-2">';
   echo 'Some text';
   echo '</div>';
}

要使其按照您的預期方式工作,您應該采用以下方式:

首先,選擇所需的確切列。

二,使用 作為安全的占位符。

第三,准備,然后將參數綁定到查詢中。 i代表整數,s代表字符串。

執行,然后在獲取時運行一段時間。

<?php
    $sql2 = "SELECT col1,col2,col3 FROM phones WHERE users_id = ?";
    $stm2 = $db->prepare($sql2);
    $stmt2->bind_param("i",$user_id);
    $stm2->execute();
    $stmt->bind_result($col1,$col2,$col3);


while($stmt2->fetch()){
echo "<div class='col-md-2'>";
echo $col1;   // echo each iteration out, works just like $result->fetch_assoc()
echo $col2;    // equivalent of $row['col2']; but in prepared statement style because you're binding the rows
echo $col1." plus ".$col2;

echo "</div>";
}
$stm2->close();  // close stmt
$db->close();   // close connection
?>

嘗試這個:

$query = "SELECT * FROM phones WHERE users_id = '$user_id'";

if ($result = $mysqli->query($query)) {

    /* fetch associative array */
    while ($row = $result->fetch_assoc()) {
        printf ("%s (%s)\n", $row["FirstName"], $row["LastName"], ...);
    }

    /* free result set */
    $result->free();
}

編輯

這只是一個快速而骯臟的示例……您確實應該按照注釋中的建議使用prepare語句

編輯2

從此行中刪除, ...printf ("%s (%s)\\n", $row["FirstName"], $row["LastName"], ...); 如果沒有其他要從數據庫輸出的列

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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