- ベストアンサー
SQLのIN演算子の使い方と注意点
- SQLのIN演算子を使ってチェックを入れた都道府県を取り出す方法と注意点について解説します。
- IN演算子を使用する際に数字などの場合は動作するが、日本語の場合には注意が必要です。
- addrの中には都道府県のデータが入っていますので、正しい形式でIN演算子を使用する必要があります。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
データベースの文字コードは何になっていますでしょうか。 No.3の補足のURLを見る限り、サイトはEUC-JPになっているようですが、 データベースの文字コード設定もEUC-JPとなっていますか? なっていない場合、SQLの実行前に文字コードの変換などが必要になるかと思います。
その他の回答 (3)
- yambejp
- ベストアンサー率51% (3827/7415)
インジェクション対策は別途する前提で・・・ <? $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; ?> みたいな感じでどうでしょ?
- Hohenheim
- ベストアンサー率18% (43/237)
日本語(文字列)をシングルクォーテーションで囲んでください。
補足
すばやい対応ありがとうございます。 $sql = "SELECT * FROM testvote WHERE addr IN(" .$array. ")"; ↓ $sql = "SELECT * FROM testvote WHERE addr IN(" .'$array'. ")"; こういうことでしょうか?
- SaKaKashi
- ベストアンサー率24% (755/3136)
"や'で囲む。
補足
すばやい対応ありがとうございます。 $sql = "SELECT * FROM testvote WHERE addr IN(" .$array. ")"; ↓ $sql = "SELECT * FROM testvote WHERE addr IN(" .'$array'. ")"; こういうことでしょうか?
補足
ご連絡ありがとうございます。 やっぱりうまく動きません。 エラーが出てくるわけではないのですが・・・ 書かれていた「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 になっているのは関係ありますか?