使用 PDO 进行高效的行存在性检查
在数据库操作中,通常需要在执行某些操作之前确定行是否存在。在这种情况下,提问者寻求有关如何使用 PHP 数据对象 (PDO) 有效检查数据库中行是否存在的指导。
为了解决该问题,尝试的第一种方法是检查所获取的行的计数排。但是,代码 if (count($row) == 0) 无效,因为 PDO 使用 fetch 方法一次检索一行,因此 count 始终为 1。类似地,if($stmt->rowCount( )
建议的解决方案是直接检查 fetch 方法的返回值。在提供的代码示例中:
<code class="php">if( ! $row) { echo 'nothing found'; }</code>
如果 fetch 调用没有产生一行,它将返回 false,触发 if 条件。这种方法可以有效地确定行不存在。
要检查多行,可以使用 fetchAll 方法:
<code class="php">$rows = $stmt->fetchAll(PDO::FETCH_ASSOC); // Same here if( ! $rows) { echo 'nothing found'; }</code>
如果 fetchAll 方法无法返回任何结果,它也会返回false,导致满足 if 条件。
此外,可以通过指示 MySQL 在行符合指定条件时返回值 1 来避免显式获取数据:
<code class="php">$sql = 'SELECT 1 from table WHERE id = ? LIMIT 1'; $stmt = $conn->prepare($sql); $stmt->execute([$_GET['id']]); if($stmt->fetchColumn()) echo 'found';</code>
此方法将执行一个查询,如果找到匹配则返回值 1,否则返回 false。 fetchColumn 方法检索结果集的第一列,在本例中,有条件地返回 1。
以上是如何使用PDO有效检查行存在性?的详细内容。更多信息请关注PHP中文网其他相关文章!