harutovxのプロフィール
- ベストアンサー数
- 11
- ベストアンサー率
- 50%
- お礼率
- 0%
- 登録日2007/03/05
- PHP-SQLiteに於いて、複数列の検索方法を教えてください
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 とエラー表示が出ます。 そもそも考え違いをしていたらすいません。 どなたかよろしくお願いします。
- web mart cgi
http://www.kent-web.com/cart/mart.html に書いてあるように カゴCGIスクリプトURL ( http://から記述 ) $script = 'http://www7b.biglobe.ne.jp/~blythe/mart/mart.cgi'; # 注文CGIスクリプトURL ( http://から記述 ) $order = 'http://www7b.biglobe.ne.jp/~blythe/mart/mart_order.cgi'; # 管理CGIスクリプトURL ( http://から記述 ) $admin = 'http://www7b.biglobe.ne.jp/~blythe/mart/mart_admin.cgi'; # データファイル( / から始まるフルパス ) $datfile = '/public_html/mart/data/mart.dat'; # 「特定商取引に関する法律」の表示内容 # → 引用: http://www.jadma.org/guid_mai/guidelin.html $rawfile = '/public_html/mart/data/mart_raw.txt'; # 在庫管理を行う (0=no 1=yes) $stock = 0; # 在庫ファイル( / から始まるフルパス ) $stkfile = '/public_html/mart/data/stock.dat'; # ファイルロック形式 # → 0=no 1=symlink関数 2=mkdir関数 $lockkey = 0; # ロックファイル名 $lockfile = '/public_html/mart/lock/mart.lock'; やりましてCheck Mode 在庫データパス: OK 在庫データパーミッション: OK 登録データパス: OK 登録データパーミッション: OK sendmailパス: OK バージョン: Web Mart v1.7 できましたが http://www7b.biglobe.ne.jp/~blythe/mart/mart_admin.cgi 管理者モードには入れないのです。 errors Can't locate ./lib/jcode.pl in @INC (@INC contains: /usr/local/pkg/perl/5.8.7/lib/i386-linux-thread-multi /usr/local/pkg/perl/5.8.7/lib /usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl .) at mart_admin.cgi line 9. どうやればいいのですか?
- 締切済み
- その他([技術者向] コンピューター)
- noname#147931
- 回答数1
- apacheの挙動がおかしいです・・・。
こんにちは。 phpの勉強をしようと思って、apacheを入れてみましたが、 どうも動きが変なんです・・・。 いままでも「apacheが起動しない!」という質問がありましたが、 ちょっと症状が違うようなので困っています。 apacheをインストールして、 http://localhost/にアクセスするのですが、 いつまで経ってもページを表示しません・・・。 プログレスバーが真ん中くらいで止まってしまいます・・・。 環境は、WindowsXP SP2です。 apacheのバージョンは、apache_2.0.63-win32-x86-no_ssl.msiです。 インストール時に、 NetworkDomaintとServerNamaは、localhostを指定しています。 インストールは正常に終わりました。 hostsファイルは、 127.0.0.1 localhost を書いているだけです。 IISは入っていません。Skypeも消しました。 access.logには、何も記録されません。 イベントビューアにも、apacheの異常に関するログはありませんでした。 netstatやtelnetで確認すると、ポート80は開いているし、 apacheを停止して、telnet localhost 80すると接続失敗するので、 httpが起動しているかどうかは分かっているみたいなのですが・・・。 このような現象をご存知の方がいらっしゃいましたら、 どうしたら解決できるか、教えていただけないでしょうか? よろしくおねがいします。
- ベストアンサー
- ネットワーク
- ijhnb6543f
- 回答数1
- プリンターの共有
2台のパソコンで、プリンターを共有したいのですが、 上手く設定できません。 手順を教えてください。 尚PCは、XPとVistaです。
- 締切済み
- その他([技術者向] コンピューター)
- 01030505
- 回答数2