• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PDOでMYSQL)

PDOでMYSQLのWHERE区にbindValueしても結果が取得できない問題

このQ&Aのポイント
  • PDOを使用してMYSQLのWHERE区にbindValueしても結果が取得できない問題が発生しています。エラーも発生せず、文字化けも起こりません。
  • 試行錯誤の結果、日本語を指定すると結果を取得できないことがわかりました。そのため、SQLデータの「太郎」を「tarou」に変更することで結果を取得することができました。
  • 基本の構文は合っていると思われますが、単純に日本語を指定することができないようです。PHPとMYSQLのバージョンはそれぞれ5.3.8とmysqlnd 5.0.8-devです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

こんばんは。 >bindValueだと型を指定できるので 確かにそうですな・・・。 $sth->execute(array($name)); この書き方は、全部STRINGなんでね。 まぁ、MySQLなので、気にしてないです・・・はい。

その他の回答 (2)

  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.3

データ型が問題になるのは、paging のために limit 句にplaceholder を置くときと、null値をnullとして入れなければならないときでしょう。それ以外は、MySQL側で適宜型変換してくれるので文字列としていれても問題ないですけど。 「 limit 句用と決まってるなら、phpで intvalue() してからSQL文に入れれば、placeholderにしなくてもいいだろう」という考え方もあるけど。。。

回答No.1

こんばんは。 >$sql = 'SELECT * FROM table WHERE name = :name; →$sql = "SELECT * FROM table WHERE name = '?'"; $sth->execute(array($name)); じゃダメなんかな? 私は普通に取得できてるので・・・。 後は文字コードが臭い・・・事ないわなぁ・・・。

dcx147
質問者

お礼

お返事ありがとうございます。 全く原因がわからず半分やけでxamppを再インストールしたところ 普通に結果を取得できました^^; 確かに方法としては「$sth->execute(array($name));」もありですよね! 自分で書いておきながらですが、executeの前にbindValueするメリットって あるんでしょうか? bindValueだと型を指定できるので、より厳密になるとかしか思いつきません・・・

関連するQ&A