• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQLのIN演算子について悩んでいます。)

SQLのIN演算子の使い方と注意点

このQ&Aのポイント
  • SQLのIN演算子を使ってチェックを入れた都道府県を取り出す方法と注意点について解説します。
  • IN演算子を使用する際に数字などの場合は動作するが、日本語の場合には注意が必要です。
  • addrの中には都道府県のデータが入っていますので、正しい形式でIN演算子を使用する必要があります。

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

  • ベストアンサー
  • smileeeen
  • ベストアンサー率70% (21/30)
回答No.4

データベースの文字コードは何になっていますでしょうか。 No.3の補足のURLを見る限り、サイトはEUC-JPになっているようですが、 データベースの文字コード設定もEUC-JPとなっていますか? なっていない場合、SQLの実行前に文字コードの変換などが必要になるかと思います。

その他の回答 (3)

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

インジェクション対策は別途する前提で・・・ <? $sql = "SELECT * FROM testvote WHERE mark = '0'"; if(isset($_REQUEST["check_addr"])){ $array = "'".implode("','", $_REQUEST["check_addr"])."'"; $sql = "SELECT * FROM testvote WHERE addr IN({$array})"; } print $sql; ?> みたいな感じでどうでしょ?

noname#244246
質問者

補足

ご連絡ありがとうございます。 やっぱりうまく動きません。 エラーが出てくるわけではないのですが・・・ 書かれていた「print $sql;」によると SELECT * FROM testvote WHERE addr IN('東京都','千葉県') と表示されていてうまく動きそうですが・・・ URLの後半が http:/***********/index.php?check_addr%5B%5D=%C5%EC%B5%FE%C5%D4&check_addr%5B%5D=%C0%E9%CD%D5%B8%A9 になっているのは関係ありますか?

  • Hohenheim
  • ベストアンサー率18% (43/237)
回答No.2

日本語(文字列)をシングルクォーテーションで囲んでください。

noname#244246
質問者

補足

すばやい対応ありがとうございます。 $sql = "SELECT * FROM testvote WHERE addr IN(" .$array. ")";       ↓ $sql = "SELECT * FROM testvote WHERE addr IN(" .'$array'. ")"; こういうことでしょうか?

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

"や'で囲む。

noname#244246
質問者

補足

すばやい対応ありがとうございます。 $sql = "SELECT * FROM testvote WHERE addr IN(" .$array. ")";       ↓ $sql = "SELECT * FROM testvote WHERE addr IN(" .'$array'. ")"; こういうことでしょうか?