我正在处理我的拼贴项目并且出现了一个问题。 我想创建一个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>';
}
答案 0 :(得分:1)
为了让它按照你想要的方式工作,你应该这样做:
首先,选择您想要的确切列。
第二,使用?作为安全的占位符。
第三,准备,然后将参数绑定到您的查询中。我是整数,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
?>
答案 1 :(得分:0)
试试这个:
$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();
}
修改强>
这只是一个快速而肮脏的例子......你应该确实使用评论
中建议的准备语句编辑2
从此行中删除, ...
:printf ("%s (%s)\n", $row["FirstName"], $row["LastName"], ...);
如果您没有要从数据库输出任何其他列