我正在使用mysqli执行选择查询...
/** ------------ 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()工作正常但无法获取记录...表中有大量数据...它显示“查询已成功执行但没有结果获取”及其后{ {1}}
我做错了什么..?
答案 0 :(得分:3)
打破以下
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
。
您需要按照guidelines here。
安装/配置它答案 1 :(得分:0)
我做错了什么..?
您正在使用mysqli而不是PDO
使用PDO可以在这几行中重写整个代码:
$stmt = $pdo->prepare("SELECT * FROM dept");
$stmt->execute();
var_dump($stmt->fetchall());
没有这么多if
和echo
当你从准备好的陈述开始时,差异会更大