如何使用PHP检查db查询返回的结果';s PDO
如何在PHP中使用PDO检查结果集是否为空如何使用PHP检查db查询返回的结果';s PDO,php,pdo,Php,Pdo,如何在PHP中使用PDO检查结果集是否为空 $SQL = "SELECT ......... ORDER BY lightboxName ASC;"; $STH = $DBH->prepare($SQL); $STH->bindParam(':member_id', $member_id); $STH->execute(); $STH->setFetchMode(PDO::FETCH_ASSOC); while($row = $STH->fetch()) {
$SQL = "SELECT ......... ORDER BY lightboxName ASC;";
$STH = $DBH->prepare($SQL);
$STH->bindParam(':member_id', $member_id);
$STH->execute();
$STH->setFetchMode(PDO::FETCH_ASSOC);
while($row = $STH->fetch()) {
$lightbox_name = $row['lightboxName'];
$lightbox_id = $row['lightboxID'];
echo '<option value="'.$lightbox_id.'">'.$lightbox_name.'</option>';
}
但是,我们刚刚开始使用PDO和准备好的语句,并对照
$STH
进行检查,结果似乎并不像预期的那样有效——它总是有价值的 只需转储有关变量的信息
var_dump($STH)
编辑
我刚才有个问题。这是有作用的。只需使用
$STH->rowCount()代码>用于行计数,然后进行比较 我会尝试使用:
但是,根据手册:
如果关联的PDO语句执行的最后一条SQL语句为
对于SELECT语句,某些数据库可能返回行数
由该声明返回。然而,这种行为不能保证
适用于所有数据库,不应依赖于
应用程序
如果不适合您,您可以使用手册中提到的其他方法
当然,您也可以在循环之前设置一个变量,而循环时,在循环中更改它并检查循环后的值…好的,这是代码,它确实起作用,最后,经过几个小时的环顾和混合匹配,这里的一些答案实际上会返回select语句的计数。
SQL显然是select语句
$username1是用户名文本框的post。
$password1与用户名设置相同。
除此之外,您应该拥有使其工作所需的一切,只需用您的变量替换我的变量即可。我希望这能节省一些人的时间,因为我在这里搜索了一段时间,试图得到我想要的东西。
此解决方案适用于当您有select语句并且希望能够基于它继续或停止并返回某些内容时
SQL = 'SELECT * from Users WHERE Username = :Username AND Password = :Password';
STH = $conn->prepare($SQL);
STH->bindParam(':Username', $username1);
STH->bindParam(':Password', $password1);
STH->execute();
STH->setFetchMode(PDO::FETCH_ASSOC);
row_count = $STH->rowCount();
这不是我问题的答案!我不想转储我的变量。我想检查数据库查询是否返回结果!执行类似于返回$result的操作,然后print_r()@mk_89:我没有$result变量,我有$STH变量,无论它是否有结果集,它总是包含数据。我刚刚得到了一个问题。这里有一个rowCount()函数。做$STH->rowCount();谢谢你,伙计。我编辑我的投票。有人在你之前回答了,所以很遗憾,我会接受他们的回答。谢谢,太好了。按预期工作。我刚刚读到这篇文章,另一种方法是使用columnCount()。您认为rowCount()和columnCount()之间有性能差异吗?@ShadowStormcolumnCount()
应该非常快,但是如果可用,rowCount()
也应该如此。您必须对此进行测试才能确定。我发现columnCount()
效果最好,因为它在我的所有测试用例下都将返回0
rowCount()
经常返回修改过的行并抛出我的逻辑。您参考的“手册中提到的其他方法”是什么?
$rows_found = $STH->rowCount();
SQL = 'SELECT * from Users WHERE Username = :Username AND Password = :Password';
STH = $conn->prepare($SQL);
STH->bindParam(':Username', $username1);
STH->bindParam(':Password', $password1);
STH->execute();
STH->setFetchMode(PDO::FETCH_ASSOC);
row_count = $STH->rowCount();