0

好吧,我有一个名为$bname的变量,它的值是:cat。因此,如果我使用以下查询,我不会收到任何错误。

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

但是如果变量$bname的值是cat 的,那么查询会显示错误消息:

错误信息:

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

您收到该错误是因为查询失败并且$sql是错误的。

首先要修复您的查询,您应该确保$bname正确转义。使用mysql_real_escape_string。IE

$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_函数已被弃用。您应该考虑使用mysqlipdo

于 2013-08-11T16:09:10.380 回答
0

问题:

A' '用于表示字符串文字。

示例:以这种方式表示字符串

'Sample'

因此,当您拥有 cat's 时,它认为这'是以开头的字符串文字的一部分,s并且它也找不到结尾'。因此错误。

解决方案:

你需要做的是:用\ So转义它$bname应该有值cat\'s

请参阅本手册

于 2013-08-11T16:10:01.180 回答
0

' 是一个逃避的角色。您需要在查询中使用“\”。

SELECT * FROM w_b_page WHERE bname = 'cat\'s'

小提琴

于 2013-08-11T16:11:47.180 回答
0

尝试:

$bname = str_replace("'","\'",$bname);
$sql = mysql_query("SELECT * FROM w_b_page WHERE bname = '" .$bname. " '");
于 2013-08-11T16:12:09.437 回答