php - 使用准备好的语句执行类似于 "mysqli_fetch_array"的操作。 PHP MYSQL

标签 php mysql prepared-statement

过去两天我一直在尝试解决这个问题,但没有成功。出于安全原因,我正在切换到准备好的声明,并且我正在尝试显示评论。不久前,虽然有很多评论,但在准备好的陈述中,我只能展示一篇评论。在尝试弄清楚之后,我切换到旧的方式(不安全的方式)并且它按预期工作。这是有效的代码(不安全的方式):

$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/

相关文章:

php - 如何在php代码中嵌入html文件?

PHPMYADMIN 调整编辑器高度大小

php - 如果可以选择,使用 JQuery 还是 PHP 构建 DOM 元素更好?

php - 操作数应包含 1 列 - Mysql

mysql - SQL使用同一查询从同一组数据中获取多个结果计数

php - 将数据库中的值插入 JWPlayer 设置 'file' 源

php - 转换为 PDO

java - 为什么 JDBC 驱动程序将准备好的语句保持在连接级别?

php - 准备好的报表返回获取结果和计数

postgresql - 将 Oracle upsert 转换为 PostgreSQL 准备好的语句