PDO を使用してデータベース内の行の存在を確認する方法
データベース内に特定の行が存在しないことを条件としたアクションを実行しようとする場合データベースを使用する場合、count($row) == 0 や if($stmt->rowCount() < 0) などの従来の方法を使用すると問題が発生する可能性があります。
より効果的なアプローチは、データベースを直接調べることです。クエリの戻り値。次のコード スニペットは、この手法を示しています。
<code class="php">$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( ! $row) { echo 'nothing found'; }</p> <p>このメソッドは、データベースに行が存在する場合は true を返し、存在しない場合は false を返します。</p> <p>複数の行の存在を確認する場合、 fetchAll() メソッドを使用できます:</p> <pre class="brush:php;toolbar:false"><code class="php">$rows = $stmt->fetchAll(PDO::FETCH_ASSOC); // Same here if( ! $rows) { echo 'nothing found'; }</code>
データのフェッチを避けたい状況では、次のクエリを使用してブール値を返すように MySQL を設定できます:
<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>
このメソッドは、行がデータベースに存在する場合はゼロ以外の値を返し、それ以外の場合は false を返します。
以上がPDO を使用してデータベース内の行の存在を確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。