过去两天我一直在尝试解决这个问题,但没有成功。出于安全原因,我正在切换到准备好的声明,并且我正在尝试显示评论。不久前,虽然有很多评论,但在准备好的陈述中,我只能展示一篇评论。在尝试弄清楚之后,我切换到旧的方式(不安全的方式)并且它按预期工作。这是有效的代码(不安全的方式):
$sql = "SELECT rate, title, date, review, recommend, helpful, username FROM rating INNER JOIN users ON rating.user_id = users.id";
$query = mysqli_query($db, $sql);
$statusnumrows = mysqli_num_rows($query);
// Gather data about parent pm's
if($statusnumrows > 0){
while ($row = mysqli_fetch_array($query, MYSQLI_ASSOC)) {
$rate = $row["rate"];
$title = $row["title"];
}
}
//Info is displayed :)
$table1 .= '
<li>
<span style="display: inline-flex;" class="stars">'.$rate.'</span><span id="review_title">'.$title.'</span>
</li>
我喜欢将变量分配给行,这样我就可以在需要的地方回显变量。
现在,尝试在准备好的语句中获得相同的结果......那是另一个故事了。这是许多不起作用的尝试之一:
$sql = "SELECT rate, title, date, review, recommend, helpful, username FROM rating INNER JOIN users ON rating.user_id = users.id";
$stmt = $db->stmt_init();
if($stmt = $db->prepare($sql)){
if($stmt->execute()){
$result = $stmt->get_result();
$a = $result->fetch_array(MYSQLI_ASSOC);
echo $a;
}else{
echo "Didn't work.";
}
$table1 .= '
<li>
<span style="display: inline-flex;" class="stars">'.$rate.'</span><span id="review_title">'.$title.'</span>
</li>
有谁知道我如何显示所有评论(如mysqli_fetch_array),但使用准备好的语句更安全?
最佳答案
我用的是这个方法
$stmt = $db->prepare("SELECT name, xp FROM users");
if($stmt->execute()){
$stmt->bind_result($name, $xp);
while($stmt->fetch()){
echo $name . ' has ' . $xp . ' xp.';
}
}else{
echo "Didn't work.";
}
关于php - 使用准备好的语句执行类似于 "mysqli_fetch_array"的操作。 PHP MYSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41149988/