0

这个错误我已经有一段时间了,我找不到解决办法。这是php文件:

<?php
$mysqli=new mysqli("127.0.0.1", "username", "password", "database"); // The actual php file has the real credentials.
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

var_dump($mysqli);
$stmt = mysqli_stmt_init($mysqli);
var_dump($stmt);
if ($stmt = $mysqli->prepare('SELECT * FROM test WHERE a=?;')) {

    $stmt->bind_param('s', $_POST['data']);

    $stmt->execute();
    var_dump($stmt);
    $result = $stmt->get_result();
    echo "<table border=1>";
    while ($row = $result->fetch_assoc()) {
        echo "<tr>";
        echo "<td>" . $row['a'] . "</td><td>" . $row['b'] . "</td><td>" . $row['c'] . "</td>";
        echo "</tr>";
    }
    echo "</table>";
}
else
{
    printf("Errormessage: %s\n", $mysqli->error);
}

mysqli_close($mysqli);
?>

我打算这样做是为了找到表“test”中 a=[whatever the user said] 的所有行,而不会有 sql 注入的风险。相反,它会在网页上生成:

object(mysqli)#1 (0) { } object(mysqli_stmt)#2 (0) { } object(mysqli_stmt)#3 (0) { }
Fatal error: Call to undefined method mysqli_stmt::get_result() in /public_html/test/test.php on line 20

我意识到这object(mysqli)#1 (0)...是来自我拥有的 var_dumps。我把它们放进去看看它是否在程序中的任何时候被设置为空。

我什至在此 PHP 手册页上复制并粘贴了示例,但仍然出现此错误。
http://php.net/manual/en/mysqli-stmt.get-result.php

编辑:我更新到版本 5.3.27 但错误仍然存​​在。

4

1 回答 1

1

两种直接的可能性:

  • 引用手册页,第一条评论:

    请注意,此方法需要 mysqlnd 驱动程序。否则你会得到这个错误:Call to undefined method mysqli_stmt::get_result()

  • PHP版本不是>= 5.3

于 2013-11-08T22:55:58.027 回答