【发布时间】:2012-08-12 01:28:54
【问题描述】:
我想要一个条件,以防该行根本不存在。
$stmt = $conn->prepare('SELECT * FROM table WHERE ID=?');
$stmt->bindParam(1, $_GET['id'], PDO::PARAM_INT);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
尝试了if (count($row) == 0) 和if($stmt->rowCount() < 0),但它们都不起作用。
【问题讨论】:
-
$stmt->rowCount()应该是您需要的,但检查它是否小于0无济于事 - 它会等于0或 小于1 -
@DaveRandom 文档指出,并非所有驱动程序都会导致
SELECT给出rowCount。显然你实际上应该使用columnCount。 -
@arxanas 一个公平的观点,但坦率地说,运行两个查询只是为了获得行数(如手册所示)是一个糟糕的解决方案。即使
$rowCount = count($rows = $stmt->fetchAll())是比这更好的解决方案,我觉得 - 如果没有行,它仍然会导致0。