ホームページ > データベース > mysql チュートリアル > 一致するものが存在する場合でも、PDO データベースの行一致クエリがゼロを返すのはなぜですか?

一致するものが存在する場合でも、PDO データベースの行一致クエリがゼロを返すのはなぜですか?

Patricia Arquette
リリース: 2024-12-18 17:20:12
オリジナル
208 人が閲覧しました

Why Does My PDO Database Row Matching Query Return Zero Even When Matches Exist?

PDO を使用したデータベース内の行の照合: 問題のトラブルシューティング

PDO を使用してデータベース内の重複行をチェックしようとすると、次のようなシナリオが発生する可能性があります。結果が期待と異なる場合。考慮すべき潜在的な問題と解決策は次のとおりです。

SQL エラーによって引き起こされる問題

クエリがエラーなく実行されていることを確認します。 PDO は、一致するものが存在しない場合でも、結果カウントとして「0」を返すことがあります。これは、クエリの問題を示しています。

条件によって引き起こされる問題

クエリ条件を確認してください。独占性。 「WHEREcol=1 ANDcol=2」などの条件は常に「0」を返します。問題を切り分けるための条件を簡素化します。

データによって引き起こされる問題

  • クエリに含まれる変数が存在し、値が含まれていることを確認します。
  • 入力データ内の印刷不可能な文字または変換された文字を確認します。これらの文字を rawurlencode() を使用してエンコードし、表示できるようにします。

デバッグのヒント

  • PDO と PHP の両方の完全なエラー レポートを有効にします。
  • データベース内のデータと入力値の差異を精査します。印刷不可能な文字を表示するには、urlencode() を使用します。
  • 正しいデータベースに接続していることを確認してください。
  • データベースと PHP の文字セットとエンコード構成を確認してください。

問題と解決策の例

クエリには次の文字列が含まれています「SELECT count(*) FROM inbox WHERE ... AND from_email = "abc Offers <[email protected]>」などの HTML エンティティ。 phpMyAdmin で実行すると、このクエリは機能しますが、PDO 経由で「0」を返します。 HTML エンティティ (エンティティに変換された「<」および「>」) が不一致の原因となります。クエリを変更してこれらのエンティティを削除すると、問題が解決します:

$sql = 'SELECT count(*) FROM inbox WHERE uid = ? AND from_email = "abc Offers [email&#160;protected]"';
$result = $link->prepare($sql); 
$result->execute([$email_number,$email_f]); 
$number_of_rows = $result->fetchColumn();
ログイン後にコピー

以上が一致するものが存在する場合でも、PDO データベースの行一致クエリがゼロを返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート