我有以下代码:
$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);
Run Code Online (Sandbox Code Playgroud)
我收到上面标记的错误.我做错了什么?
编辑:
将fecth_array()更改为fetch_array()
vst*_*stm 15
正如其他人所说,它仅适用于最前沿的PHP.你可以这样做(回答类似的问题):
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);
Run Code Online (Sandbox Code Playgroud)
如果您有一个没有参数的简单查询,请使用mysqli :: query - 不要将它与动态生成的SQL语句一起使用.
如php文档mysqli_stmt :: get_result中所述,自PHP 5.3.0起支持此方法.
并在陈述用户指出节:
此方法需要mysqlnd驱动程序.Othervise你会得到这个错误:调用未定义的方法mysqli_stmt :: get_result()
我\xc2\xb4m猜测\xc2\xb4s下面的行,更改:
\n\n$info = $result->fecth_array(MYSQLI_ASSOC);\nRun Code Online (Sandbox Code Playgroud)\n\n到:
\n\n$info = $result->fetch_array(MYSQLI_ASSOC);\nRun Code Online (Sandbox Code Playgroud)\n