这个错误我已经有一段时间了,我找不到解决办法。这是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 但错误仍然存在。