PDO を使用した行の存在の確認
PDO を使用してデータベース内の行の存在を確認するときに問題が発生しました。この問題に対処するには、次の解決策を検討してください。
回答で提案されているように、クエリの戻り値を直接確認できます。以下に例を示します。
$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 'Row does not exist';
}
このコードでは、$stmt->execute() がクエリの実行を試みます。行が見つからない場合、$stmt->fetch() は FALSE を返します。これにより、if (!$row) 条件を使用して行が存在するかどうかを判断できるようになります。
さらに、複数の行をチェックしたい場合、または行のフェッチを回避したい場合は、$stmt-> を使用できます。 fetchAll() メソッド:
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
if (!$rows) {
echo 'No rows found';
}
あるいは、行が見つかったときに 1 を返すように MySQL に指示することもできます。
$sql = 'SELECT 1 from table WHERE id = ? LIMIT 1';
$stmt = $conn->prepare($sql);
$stmt->execute([$_GET['id']]);
if ($stmt->fetchColumn()) echo 'Row found';
このアプローチにより、行をフェッチする必要がなくなり、効率が向上します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3