【发布时间】:2015-03-30 15:21:22
【问题描述】:
在迁移到 PDO 之前,我使用过
$result = mysqli_query ($conn, 'SELECT * FROM mytable WHERE id = 54');
if (mysqli_num_rows($result) >= 1) { ... }
检查查询是否返回至少一个结果。
现在使用 PDO,我在许多 SO 问题(如 get number of rows with pdo)中看到 PDO 中没有直接函数来检查查询的行数(有关于使用 @ 的警告987654325@),而是像做一个额外的查询这样的解决方案:
SELECT count(*) FROM mytable WHERE id = 54
但这对于我想要的来说可能太多了:事实上,我不需要确切的行数,只要至少有一个就行。
如何检查准备好的语句查询是否返回至少一行?
$stmt = $db->prepare('SELECT * FROM mytable WHERE id = 54');
$stmt.execute();
... // HOW TO CHECK HERE?
【问题讨论】:
-
@Fred-ii- 为什么要计算列而不是行?我想它会起作用,但我不明白其中的原理......
-
不能说。 PDO 有时会成为一种奇怪的动物,但我从来没有完全理解过为什么。
-
@Fred-ii- 为什么不php.net/manual/en/pdostatement.rowcount.php?
-
@basj 因为
PDOStatement::rowCount() returns the number of rows affected by the last DELETE, INSERT, or UPDATE statement executed by the corresponding PDOStatement object.而你的是SELECT