0

$bnameという変数があり、その値はcatです。したがって、次のクエリを使用すると、エラーは発生しません。

$sql = mysql_query("SELECT * FROM w_b_page WHERE bname = '" .$bname. " '");

しかし、変数$bnameの値が猫の場合、クエリはエラーメッセージを表示しています:

エラーメッセージ:

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in 
E:\Software Installed\xampp\htdocs\wisper\businesspage.php on line 31


Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in 
E:\Software Installed\xampp\htdocs\wisper\businesspage.php on line 36

このエラー メッセージが表示されるのはなぜですか?

4

4 に答える 4

2

クエリが失敗し、$sqlfalse であるため、そのエラーが発生しています。

最初にクエリを修正するには、$bnameが適切にエスケープされていることを確認する必要があります。mysql_real_escape_stringを使用します。すなわち

$bname = mysql_real_escape_string($bname, $con); // where $con is your database connection
$sql = mysql_query("SELECT * FROM w_b_page WHERE bname = '" .$bname. " '");

これを行うためのより良いアプローチは次のとおりです。

$bname = mysql_real_escape_string($bname, $con); 
$sql = mysql_query("SELECT * FROM w_b_page WHERE bname = '" .$bname. " '");
if (!$sql) {
  die('Invalid query: ' . mysql_error());
}

上記の方法では、エラーの詳細が表示されます。

最後に、mysql_関数は非推奨であることに注意してください。mysqliまたはpdoの使用を検討する必要があります。

于 2013-08-11T16:09:10.380 に答える