※ ChatGPTを利用し、要約された質問です(原文:MySQLでWHERE条件が効かない)
MySQLでWHERE条件が効かない
このQ&Aのポイント
MySQLのWHERE条件が効かない問題が発生しています。『いますぐ導入!PHP+MySQLで作る最速Webシステム』という入門本のサンプルプログラムを使用しているが、SQLのWHERE文が機能せずに全レコードが表示されてしまいます。
サンプルプログラムでは、書籍のISBN、タイトル、価格などが収められたサンプルデータベースを使用し、入力された検索文字列でWHERE条件で絞り込みを行っています。しかし、どの検索条件を入力しても全レコードが表示されてしまいます。
問題の原因を特定することができないため、対応方法についてアドバイスを求めています。MySQLのバージョンやPHPのバージョンに問題があるのか、また他の原因があるのか、ご教示いただけると幸いです。
環境:
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
対応方法につき、ちょっと見当がつかないのですが、何かお心当たりが
ありましたらご教示いただけますと幸いです。よろしくお願い致します。
お礼
す、すみません、 書籍に載っているものなのにご指摘のようなミスってあるのかなぁ? なんて、一から読み直してみたら、php.ini のregister_globals が Offになっており、Onにしたらうまくいきました・・・ よく読みもせず失礼いたしました。