在mysql_query中,我们可以通过执行以下操作来检查查询是否已执行:
$query = $yourdbconnection->fetch_array(mysql_query("SELECT * FROM tbl_name"));
if ($query){ // query is working }
else { // query is not working }
在PDO中,我正在做这样的事情:
$query = $yourdbconnection->query("SELECT * FROM tbl_name");
$fetchquery = $query->fetchAll();
if ($fetchquery) { // query is working}
else { // query not working}
我的代码有效吗? if
语句究竟在做什么?它是否正在做mysql_query
正在做的事情?如何检查查询是否返回0行?
[编辑]
我发现这些解决方案是问题的解决方法
使用$stmt->fetch()
if ($data = $stmt->fetch()) {
do {
echo $data['model'] . '<br>';
} while ($data = $stmt->fetch());
} else {
echo 'Empty Query';}
?&GT; 添加另一个查询以计算行数,请参阅this answer
但是,我仍在寻找更好的解决方案
答案 0 :(得分:0)
要查看您的查询是否已执行,我建议您将PDO设置为异常模式,例如您的常识建议。你可以这样做:
$dbh = new PDO('mysql:host=localhost;dbname=db', 'user', 'pass');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
关于检查查询是否在PDO中返回值的最佳方法,我建议只执行SELECT COUNT(*) FROM table
查询,如下所示:
<?php
$query = $dbh->query('SELECT COUNT(*) FROM table');
if ($query->fetchColumn() != 0) {
/* Query has result(s) */
$query = $dbh->query('SELECT * FROM table');
/* ... */
} else {
/* Query has no results */
}
?>
如果您有任何其他问题,请告诉我。
答案 1 :(得分:-1)
您的帖子中有2个问题。
1)检查查询是否在PDO中返回值的最佳方法是什么?
检查返回值
2)如何检查PDO中是否有SQL查询
按照tag wiki
中的说明在异常模式下设置PDO顺便说一下,对于"SELECT * FROM tbl_name"
查询,您可能希望使用fetchAll()
代替fetch()
。