SQLiteの複数列の検索
SQLiteの勉強を始めたばかりなのですが、
複数列の検索方法が解らなくて、
色々調べましたが解らなかったので質問させてください。
データベースの中が
|ID | 氏名 | 住所 | 電話番号
|----|-------|--------------|---------------
|1 |山田 |埼玉県******** |03********
|2 |田中 |東京********** |03********
|3 |佐藤 |千葉県******** |090********
|4 |佐々木 |埼玉県******** |090********
-----------------------------------------------------
期待する動き
例1)
住所:埼玉県
と検索すると
山田,埼玉県********,03********
佐々木,埼玉県********,090********
と表示される
例2)
名前:山田
住所:埼玉県
と検索すると
山田,埼玉県********,03********
と表示される
※ユーザーからはどの項目を検索対象とされるか解らない。
test.phpの内容
//フォームからID取得
$search_id = $_POST['id'];
//フォームから氏名取得
$search_user_name = $_POST['search_user_name'];
//フォームから住所取得
$search_home_address = $_POST['search_home_address'];
//フォームから電話番号取得
$search_tel_num = $_POST['search_tel_num'];
//フォームからの入力データを格納
$chk_data = "$search_id,$search_user_name,$search_home_address,$search_tel_num";
//比較する列名配列変更用カウント変数
$i = 0;
//比較する列名
$chk_db_line = array("id",
"user_name",
"home_address",
"tel_num");
//データベース列名格納
$all_data = "id,user_name,home_address,tel_num";
//ユーザーが入力した検索項目をカンマ区切りで配列に格納
foreach($chk_line as $chk_ln){
//ユーザーが入力した検索項目をチェック
if( ($chk_ln === "") || ($chk_ln === NULL) ){
//比較する列名配列変更用カウント変数インクルメント
$i++;
//ユーザーが入力した検索項目をチェックし値が入っている場合
}else{
//sqlite文の$query = WHERE以降を変数に代入
//ユーザーが入力した検索項目の個数は可変のため
$sqlite_str .= $chk_db_line[$i]. " LIKE ". "'%". $chk_ln. "%' ";
//比較する列名配列変更用カウント変数インクルメント
$i++;
}
}
//設定項目がなければ検索しない
if(!$sqlite_str){
echo "検索項目が設定されていません。";
//設定項目あれば検索する
}else{
//データベースオープン
if($db = sqlite_open('./db/Personal_data')){
//検索
$query = "SELECT ".$all_data ." FROM tb1_personal_data WHERE ".$sqlite_str;
$result = sqlite_query($db, $query);
//検索結果表示
while($info = sqlite_fetch_array($result)){
echo "<tr>";
echo "<td>氏名</td><td align='left'>{$info['user_name']} </td>";
echo "</tr>";
echo "<tr>";
echo "<td>氏名</td><td align='left'>{$info['home_address']} </td>";
echo "</tr>";
echo "<tr>";
echo "<td>氏名</td><td align='left'>{$info['tel_num']} </td>";
echo "</tr>";
}
//データベースクローズ
sqlite_close($db);
}
}
とすると、単体検索は成功しましたが、複数検索を行うとエラーが表示される
検索フォームから検索
例1)
住所:埼玉県
と検索すると
山田,埼玉県********,03********
佐々木,埼玉県********,090********
と表示される
成功
例2)
名前:山田
住所:埼玉県
と検索すると
Warning: sqlite_query() [function.sqlite-query]: near "home_address": syntax error in
Warning: sqlite_fetch_array() expects parameter 1 to be resource, boolean given in
とエラー表示が出ます。
そもそも考え違いをしていたらすいません。
どなたかよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Dosブロンプトでtabを出力したい
-
shシェルスクリプト 空白行の...
-
PHP-SQLiteに於いて、複数列の...
-
PHPでのパスワード制限のセキュ...
-
小数点以下0の非表示
-
syntax error, unexpected 'ech...
-
DBのハッシュ化したパスワード...
-
php で 20連続ガチャ作成中な...
-
switch()文で値の大小比較
-
コマンドプロンプト フォルダ内...
-
Windowsのsetコマンドでの小数...
-
Eclipse3.7 ショートカットキー...
-
findstrのerrorlevel
-
コマンドプロンプトのスクリプ...
-
バッチファイルでpingの結果を...
-
ゼロとNULLを区別して number_f...
-
bashの関数の引数にスペースが...
-
phpでcookieがうまく保存されない
-
XMLのタグの有無をPHPで判定し...
-
switch文の中でforeach
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Dosブロンプトでtabを出力したい
-
バッチファイルでpingの結果を...
-
shシェルスクリプト 空白行の...
-
phpでcookieがうまく保存されない
-
switch()文で値の大小比較
-
findstrのerrorlevel
-
syntax error, unexpected 'ech...
-
バッチファイルで、全てのウィ...
-
小数点以下0の非表示
-
ゼロとNULLを区別して number_f...
-
オブジェクトの中身の判定(PHP)
-
Windowsのsetコマンドでの小数...
-
XMLのタグの有無をPHPで判定し...
-
PHP一覧表示した項目にリンクを...
-
batファイルでPC名称の変更
-
フォームから送った半角カナの...
-
DBのハッシュ化したパスワード...
-
pdftkを使った処理をバッチファ...
-
WindowsのイベントログをExcel...
-
php mysql SELECT文でテーブル...
おすすめ情報