リスを倒す 『初めてのPHP,MySQL,JavaScript&CSS』

『初めてのPHP,MySQL,JavaScript&CSS』勉強奮闘記

【検索結果の表示】エラーから抜け出せない・・・

「10-5. PHPからデータベースを操作する⑤結果の表示」で検索結果を出すlist.phpを作成しました。
ただ、結果は。。。
検索した件数が1件以上ある場合、tableタグを表示して、0件の場合に「検索結果がありません」とでればokなのですが、どうもおかしい。。。
f:id:taro-blog2323:20161001161350p:plain

また、何か記載ミスってるのかなと思い見返しても、わからず…
39行目のこいつがおかしいみたい。
if ($count < 1){

Notice: Undefined variable: count in C:\Program Files (x86)\Zend\Apache24\htdocs\list.php on line 38
というのは、定義されてない変数を参照したときに出てくるらしい。
てことは、$count=の部分がおかしいのかなー。


もう一個でてるエラーはSQL文おかしくね?ということなんですけど、
これも間違ってないし、、、ふんがー!と思ってスペースとか直したり色々いじっていたところ・・・
f:id:taro-blog2323:20161001163416p:plain

でた!なぬーーー!

何がエラーを引き起こしていたかというと、名前付きプレースホルダの「:」と「first_name」にいらんスペースを入れてしまっていたことが原因でした。

誤:$sql= "SELECT * FROM member WHERE last_name like : last_name OR first_name like : first_name";

正:$sql= "SELECT * FROM member WHERE last_name like :last_name OR first_name like :first_name";

コードを打ち込むのに必死で、:first_nameの意味を忘れてしまっていたことがエラーの原因ですね。。
今回のエラーのおかげで何度も何度も(笑)コードを見返したので、それぞれの役割がわかったので結果オーライとしよう。。。
そしてプログラムは繊細だなー、でもちゃんとエラーで指摘してくれるからなんとかどうにかなった…ありがとうエラー表示。。