MySQLで複数の文字列で抽出したい時に、下記のような構文を使います。
1 |
SELECT * FROM sample where name IN('suzuki','saito'); |
IN(’テキスト’,’テキスト2′)の部分をPHPで簡単に作れるようにしたいと思います。
一度作っておくと使い回しができるので便利です。
MySQLのmemberというテーブルのnameという列に「suzuki,sato」という様にカンマ区切りでデータが登録されている場合の処理方法です。
1 2 3 4 5 |
//MySQLの接続(省略) while($result = $stmt->fetch(PDO::FETCH_ASSOC)) { $name = ($result['name']); } |
これで変数 $nameには「suzuki,sato」という文字列が入っています。
パターンを考えてみると要素が1つの場合、2つ以上の場合に分けることができます。
要素が1つの場合 IN(’suzuki’)
要素が2つ以上の場合 IN(‘suzuki’,’sato’)
文字列の要素数を把握するために配列にしてみます。
1 2 |
$name_array=explode(",",$name); $count_sample = count($name_array); |
1 2 3 4 5 6 7 8 9 10 11 |
if($count_sample==1) { $in_sample='('.$name.')'; } elseif($count_sample>0) { $in_sample="('".str_replace(",","','" , $name)."')"; } $test='IN'.$in_sample; //頭にINを付ける |
人気記事一覧
- MySQL 最大の値・最新の日付データを1つ抽出する方法(MAX)
- [CakePHP] XformHelperの使い方
- Linux: スワップファイル(swp)の削除方法
- HTMLのForm methodとactionについて
- PHPでカンマ区切りデータを配列に入れる方法 (explode)
- [エラー対処] failed to open stream: No such file or directory
- [CSS]ブロック要素(div)の高さを、内部のfloat要素に合わせて自動調整する
- [vsftp] FileZillaから接続できない場合の対処法
- PHP5.1→PHP5.3へバージョンアップする方法(CentOS)
- PHPでテキストを1行ずつ読み込む方法(file_get_contents,explode)