在转移到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中没有直接函数来检查查询的行数(有关于使用的警告$result->rowCount();
),而是做一个额外的查询等解决方案:
SELECT count(*) FROM mytable WHERE id = 54
但这对我想要的东西来说可能太多了:事实上,我不需要确切的行数,但只要至少有一行。
如何检查预准备语句查询是否至少返回一行?
$stmt = $db->prepare('SELECT * FROM mytable WHERE id = 54');
$stmt.execute();
... // HOW TO CHECK HERE?
答案 0 :(得分:3)
$stmt = $db->prepare('SELECT * FROM mytable WHERE id = 54');
$stmt.execute();
... // HOW TO CHECK HERE?
这很简单,你已经差不多了。
$stmt = $db->prepare('SELECT * FROM mytable WHERE id = 54');
$stmt.execute();
$result = $stmt->fetchAll(); // Even fetch() will do
if(count($result)>0)
{
// at least 1 row
}
如果您只想要是/否答案,那么您还应该在查询中添加LIMIT 1
,以便mysql不会浪费尝试寻找更多行。