我正在使用mysqli执行select查询…
/** ------------ queries ---------- **/
$stmt = $mysqli->prepare("SELECT * FROM dept");
if(! $stmt)
{
echo "statement not prepared well";
}
else
{
echo $mysqli->error;
}
if (!$stmt->execute()) {
echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}
// add else
else{
echo "Query is successfully executed but no result fetch";
}
if (!($res = $stmt->get_result())) {
echo "Getting result set failed: (" . $stmt->errno . ") " . $stmt->error;
}
/** ------------------------------- **/
#------result ----
var_dump($res->fetch_all());
#---------(/result)----
我的问题是execute()工作正常,但无法获取记录…这个表中有大量的数据。它显示"查询已成功执行,但未获取结果",之后是Fatal error: Call to undefined method mysqli_stmt::get_result()
if (!($res = $stmt->get_result())) {
$res = $stmt->get_result();
if( !$res ) {
或者更确切地说是
$res = $stmt->get_result();
if( $res->num_rows == 0 ) {
这个错误(我之前没有注意到)是因为
mysqli_stmt::get_result()仅对
mysqlnd
有效。
您需要按照这里的指导原则安装/配置它
我做错了什么… ?
你正在使用mysqli而不是PDO
整个代码可以用PDO重写成这几行:
$stmt = $pdo->prepare("SELECT * FROM dept");
$stmt->execute();
var_dump($stmt->fetchall());
没有这些大量的if
和echo
。
当你以预处理语句