[PHP-users 33579] Re: mysql_queryでの検索について

MH hashi_311 @ kve.biglobe.ne.jp
2008年 6月 6日 (金) 21:09:38 JST


MHです。

「mysql_query エスケープ」で検索したら
失敗原因・対処法等が理解出来ると思います。

>こんばんは。
>1点、質問させて下さい。
>
>
>-------------------------
>$url[0] = "http://www.zzz.com/";
>$url[1] = "http://www.yyy.com/?a=b";
>$url[2] = "http://www.xxx.com/?a=b&b=5";
>$sql = "SELECT * FROM database WHERE `url` = '".$url[2]."'";
>$request = mysql_query($sql) or die ("error");
>$request_row = mysql_num_rows($request);
>echo "実行したSQL:<br>".$sql."<br>";
>if ($request_row >= 1) ( echo "該当有"; } else { echo "該当無"; }
>--------------------------
>というPHPプログラムがあるのですが、
>sqlで検索するurlで、$url[0]、$url[1]での検索は該当有となり、問題ないのですが、
>$url[2]で検索すると、該当無となり、検索にひっかかりません。
>
>原因は、文字列に半角の&があるからだと思うのですが、mysql_queryで実行する
>検索文字列に含まれている「&」が含まれている場合、どの様にすれば、
>うまく検索されるようになるのでしょうか?
>
>
>上記を実行すると、
>--------------------------
>実行したSQL:
>SELECT * FROM database WHERE `url` = 'http://www.xxx.com/?a=b&b=5'
>該当無
>--------------------------
>と表示されますが、phpMyAdminの「サーバ localhost 上でクエリを実行する」で
>SELECT * FROM database WHERE `url` = 'http://www.xxx.com/?a=b&b=5'
>を実行すると、問題なく該当・表示されます。
>
>
>実行環境は、以下の通りです。
>PHP 5.2.6
>phpMyAdmin - 2.10.3
>MySQL 5.0.45
>FreeBSD 6.4
>_______________________________________________
>PHP-users mailing list  PHP-users @ php.gr.jp
>http://ml.php.gr.jp/mailman/listinfo/php-users
>PHP初心者のためのページ - 質問する前にはこちらをお読みください
>http://oldwww.php.gr.jp/php/novice.php3


PHP-users メーリングリストの案内