过去两天我一直试图解决这个问题而没有运气。出于安全原因,我正在转换为准备好的陈述,并且我试图显示评论。在最近的过去,通过准备好的陈述,我只能展示一篇评论,尽管有很多。在试图找出它之后,我转向了旧方式(不安全的方式)并且它按预期工作。这是有效的代码(不安全的方式):
$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 一样),但是使用准备好的语句会更安全吗?
答案 0 :(得分:0)
我用这种方式
$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.";
}