What's wrong with mysqli::get_result? [duplicate]
I have the following code:
$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 = $resu开发者_Go百科lt->fetch_array(MYSQLI_ASSOC);
echo json_encode($info);
And I get some error marked above. What have i done wrong?
EDIT:
changed fecth_array() to fetch_array()
As others have stated, it is only available in bleeding edge PHP. You could do something like this (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);
Or use mysqli::query if you have a simple query with no parameters - don't use it with dynamically generated SQL-statements.
As mentioned in php documentation mysqli_stmt::get_result, this method is supported since PHP 5.3.0.
And it is stated in the user notes section that:
This method requires the mysqlnd driver. Othervise you will get this error: Call to undefined method mysqli_stmt::get_result()
You're probably using old version of PHP not supporting get_result() as stated on manual page
(No version information available, might only be in SVN)
The manual page doesn't give any clear information on which minimum version of PHP is needed for get_result()
to work:
(No version information available, might only be in SVN)
I don't know the background to this, but it may simply not be available in your PHP version.
You could use fetch()
instead.
I´m guessing it´s the line below that, change:
$info = $result->fecth_array(MYSQLI_ASSOC);
to:
$info = $result->fetch_array(MYSQLI_ASSOC);
check to see it your PHP mysql native driver is enable. get->result() only works when mysql native driver is enable. http://www.php.net/manual/en/mysqli-stmt.get-result.php
精彩评论