使用准备好的语句返回Select*查询的结果


Return results from Select * query using prepared statements

我有以下测试脚本来调整我当前的所有程序以使用准备好的语句。。。找不到正确的语法/结构来读取结果行:

    $userid = "admin";
    $stmt = mysqli_stmt_init($link);
    if (mysqli_stmt_prepare($stmt, 'SELECT * FROM user_info WHERE userid = ?')) {
        mysqli_stmt_bind_param($stmt, "s", $userid);
        mysqli_stmt_execute($stmt);
        $result = mysqli_stmt_store_result($stmt);
        $number_of_rows = mysqli_stmt_num_rows($stmt);
        echo "Number of Rows: $number_of_rows<br />";
        $result = mysqli_stmt_get_result($stmt);
        for($i=0;$i<$number_of_rows;$i++){  
            $row = mysqli_fetch_array($result, MYSQLI_ASSOC);
            echo $row["id"];
        }
        mysqli_stmt_close($stmt);
    }
    else{
        // Catch a database error here
        die("Could not query database.");
    }

如何正确引用结果(使用过程)?

试试这个:

$userid = "admin";
$stmt = mysqli_stmt_init($link);
if (mysqli_stmt_prepare($stmt, 'SELECT * FROM user_info WHERE userid = ?')) {
    mysqli_stmt_bind_param($stmt, "s", $userid);
    mysqli_stmt_execute($stmt);
    $result = mysqli_stmt_store_result($stmt);
    $number_of_rows = mysqli_stmt_num_rows($stmt);
    echo "Number of Rows: $number_of_rows<br />";
    $result = mysqli_stmt_get_result($stmt);
    while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC))  
        echo $row["id"];
    }
    mysqli_stmt_close($stmt);
}
else{
    // Catch a database error here
    die("Could not query database.");
}

获取结果函数请参阅php手册:http://php.net/manual/en/mysqli-stmt.get-result.php(示例#2程序样式)