尝试获取MySQL查询的结果时,“调用未定义的方法”错误

时间:2013-11-08 22:51:48

标签: php mysql sql mysqli

我有一段时间没有这个错误,我无法找到解决方案。这是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);
?>

我打算用它来查找表中的所有行&#34; test&#34;其中a = [无论用户说什么]没有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。我把它们放进去看看程序中的任何一点是否都设置为null。

我甚至在这个PHP手册页上复制并粘贴了这个例子,但我仍然遇到了这个错误 http://php.net/manual/en/mysqli-stmt.get-result.php

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

1 个答案:

答案 0 :(得分:1)

两种直接的可能性:

  • 从手册页引用,首先评论:

      

    请注意,此方法需要mysqlnd驱动程序。   其他人你会得到这个错误:调用未定义的方法mysqli_stmt :: get_result()

  •   
  • PHP版本不是>= 5.3
  •