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