こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

MySQLでWHERE条件が効かない

環境:
PHP 5.0.3
MySQL 4.0.14b(Win)(←古いこと承知)
IIS 5.1

『いますぐ導入!PHP+MySQLで作る最速Webシステム』という入門本のサンプル
プログラムを使って勉強していますが、SQLのWHERE文が効かず全レコードが
出てきてしまいます(同書は PHP 4.3.1 を前提に書かれます)

単純に、書籍のISBN、タイトル、価格などが収められたサンプルデータベースで、

こういう↓ search_form.htm から sample.php にPOSTしてます。
書籍タイトル<INPUT size="44" type="text" name="title" maxlength="100"> を含む


sample.php は、上記などに入力された検索文字列でWHERE条件で絞込みます。
一部抜粋しますと:

| //SQL文を組み立てます(フォームの値をWhereに指定)
| $sql = "select * from bookinfo
| where (isbn like '$isbn%') and
| (title like '%$title%')";
| //priceは指定されているときだけSQL文に追加
| if (strlen($price) > 0) {
| $sql .= " and (price <= $price)";
| }
| $sql .= " order by isbn";
|
| //SQL文の確認用(デバッグ時のみ使用します)
| print $sql;


どの検索条件を入力しても全レコードが出力してしまうので、上記抜粋の
最後の行のコメントを有効にしたところ、こういうSQL文を吐き出しており、
入力した文字列が有効になっていません。

select * from bookinfo where (isbn like '%') and (title like '%%') order by isbn

対応方法につき、ちょっと見当がつかないのですが、何かお心当たりが
ありましたらご教示いただけますと幸いです。よろしくお願い致します。

投稿日時 - 2005-02-10 17:24:04

QNo.1212008

困ってます

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

$isbn、$title にキチンと値が入っていないからですよ。
フォームから受け取って$isbnなどにセットしてますか?

たとえば
$isbn = $_POST['isbn'];
$title = $_POST['title'];

などなど
(サンプルですので動くかどうかは未テストです。)

投稿日時 - 2005-02-10 17:32:20

お礼

す、すみません、

書籍に載っているものなのにご指摘のようなミスってあるのかなぁ?
なんて、一から読み直してみたら、php.ini のregister_globals が
Offになっており、Onにしたらうまくいきました・・・

よく読みもせず失礼いたしました。

投稿日時 - 2005-02-10 17:47:42

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問