• 締切済み

PDOのデータ取得方法について

お世話になります。 以前まで「mysql_query」でSQLを実行していたのをPDOで行うように変更しております。 prepareの「?」の部分までのSQLにした場合(1)、データ取得出来ますが (2)ですとエラーも返ってこなくデータ取得出来ません。 色々と試してはいますが、全く出来なくて大変困っています。どうかご教示くださいませ。 1)SELECT * FROM table WHERE data_code = ? and data_code2 = ? 2)SELECT * FROM table WHERE data_code = ? and data_code2 = ? and (data_code3 = "null" or data_code3 is null or data_code3 = "") ※PHP5.3、MySQL5.0です。

みんなの回答

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.3

その状況から考えるに、今までの mysql_query と PDO では null の評価の仕方が違うってことなんでしょうかね。 正直、どの段階で変換されるのか分かんないのですが、↓ここらへんを なんやかんやすると どうにかなるかもしれません。 PDO::setAttribute PDO::ATTR_ORACLE_NULLS http://php.net/manual/ja/pdo.setattribute.php なんか これなら回答しないほうがいいんじゃないかぐらいのテキトーすぎる回答ですみません。

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.2

PDOをやったことのない俺なら、とりあえず こう試してみて、どうなるかで その後を決めます。 1 . 徐々に条件を増やす。 SELECT * FROM table WHERE data_code = ? and data_code2 = ? and (data_code3 = "null") ↓ SELECT * FROM table WHERE data_code = ? and data_code2 = ? and (data_code3 = "null" or data_code3 is null) ↓ SELECT * FROM table WHERE data_code = ? and data_code2 = ? and (data_code3 = "null" or data_code3 is null or data_code3 = "") 2 . 後半の括弧を 更に括弧で括る。 SELECT * FROM table WHERE data_code = ? and data_code2 = ? and ((data_code3 = "null") or (data_code3 is null) or (data_code3 = "")) まぁ、PDO自体 触ったことのない人間の戯言です。

jojo_
質問者

補足

ありがとうございます。 仰るとおり条件を変えてみた結果、質問文の「1」しか取得出来ずこちらで問い合わせさせて頂いた経緯です。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

単に合致するデータが0件というオチはないですよね? クォーテーションが競合したりはしていませんか? (エラーをはいていないなら大丈夫かもしれませんが)

jojo_
質問者

補足

ありがとうございます。 「mysql_query」ではデータが取得出来るので対象データが無いという事ではないのですが エラーもはかないのでクォーテーションの関係ではないようです。 大変恐れ入りますが引き続き宜しくお願い致します。