我有以下代码:
$postId = $_GET['postId'];
$mysqli = new mysqli('localhost', 'username', 'database', 'name_db');
mysqli_report(MYSQLI_REPORT_ALL);
$stmt = $mysqli->stmt_init();
$stmt->prepare("
SELECT *
FROM posts
WHERE postId = ?
");
$stmt->bind_param('i', $postId);
$stmt->execute();
$result = $stmt->get_result();//Call to undefined method
$info = $result->fetch_array(MYSQLI_ASSOC);
echo json_encode($info);
我收到上面标记的错误。我做错了什么?
编辑:
将fecth_array()更改为fetch_array()
答案 0 :(得分:15)
正如其他人所说,它仅适用于最前沿的PHP。你可以这样做(answer to a similar question):
function bind_array($stmt, &$row) {
$md = $stmt->result_metadata();
$params = array();
while($field = $md->fetch_field()) {
$params[] = &$row[$field->name];
}
call_user_func_array(array($stmt, 'bind_result'), $params);
}
// ....
bind_array($stmt, $info);
$stmt->fetch();
echo json_encode($info);
如果您有一个没有参数的简单查询,请使用mysqli::query - 不要将其与动态生成的SQL语句一起使用。
答案 1 :(得分:6)
如php文档mysqli_stmt::get_result中所述,自PHP 5.3.0起支持此方法。
用户注释部分中说明:
此方法需要mysqlnd驱动程序。 Othervise你会得到这个错误:调用未定义的方法mysqli_stmt :: get_result()
答案 2 :(得分:2)
您可能正在使用不支持get_result()的旧版PHP,如手册页
所述(No version information available, might only be in SVN)
答案 3 :(得分:2)
manual page没有提供get_result()
工作所需的最低版本PHP的明确信息:
(没有可用的版本信息,可能只在SVN中)
我不知道这个的背景,但它可能在您的PHP版本中无法使用。
您可以改用fetch()
。
答案 4 :(得分:0)
我猜它是下面的那一行,改变:
$info = $result->fecth_array(MYSQLI_ASSOC);
为:
$info = $result->fetch_array(MYSQLI_ASSOC);
答案 5 :(得分:0)
检查一下你的PHP mysql本机驱动程序是否启用。 get-> result()仅在启用mysql本机驱动程序时有效。 http://www.php.net/manual/en/mysqli-stmt.get-result.php