如何使用PHP的PDO检查数据库查询返回的结果

Sha*_*orm 6 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()) {
    $lightbox_name = $row['lightboxName'];
    $lightbox_id = $row['lightboxID'];
    echo '<option value="'.$lightbox_id.'">'.$lightbox_name.'</option>';
}
Run Code Online (Sandbox Code Playgroud)

我过去常常这样做:

$result = mysql_query("SELECT ...... ORDER BY lightboxName ASC;");
if(!$result) { echo 'No results found!'; }
Run Code Online (Sandbox Code Playgroud)

但是刚开始使用PDO和准备好的语句并且检查$STH似乎没有按预期工作 - 它总是有价值的!

jer*_*oen 9

我会尝试使用rowCount():

$rows_found = $STH->rowCount();
Run Code Online (Sandbox Code Playgroud)

但是,根据手册:

如果关联的PDOStatement执行的最后一个SQL语句是SELECT语句,则某些数据库可能会返回该语句返回的行数.但是,并不保证所有数据库都有这种行为,不应依赖于便携式应用程序.

如果它不适合您,您可以使用手册中提到的其他方法.

您当然也可以在while循环之前设置变量,在循环中更改它并在循环之后检查值...