-2

为什么1有效而2无效????

1

$temp = mysql_query("SHOW DATABASES LIKE "."'"."cwed"."'",$con);
$check = mysql_num_rows($temp)>0;

2

  $tmp = mysql_real_escape_string('SHOW DATABASES LIKE "cwed"');
  $temp = mysql_query($tmp,$con); 
  $check = mysql_num_rows($temp)>0;

问题是当我检查 mysql_num_rows($temp) 时出现错误

警告:mysql_num_rows() 期望参数 1 是资源,布尔值在 C:** * \ 第 21 行给出。

所以我发现我的查询返回一个布尔值而不是资源,这将在这种情况下发生 $temp 是布尔值而不是值为 0 的资源。当我在终端中检查时它说集合是 0。那么在这种情况下我怎么会我得到 bool 而不是 0

4

3 回答 3

5

问题是mysql_escape_string您的第二个示例中的调用它正在修改您的报价。回显 tmp 你会看到它正在转变

SHOW DATABASES LIKE "cwed"

SHOW DATABASES LIKE \"cwed\"
于 2013-06-20T05:37:36.607 回答
1

mysql_real_escape_string()调用 MySQL 的库函数 mysql_real_escape_string,该函数将反斜杠添加到以下字符:\x00\n\r\'和. 它来自手册。这就是您的代码不起作用的原因。"\x1a

你的代码应该是: -

$query = 'SHOW DATABASES LIKE "cwed"';
$temp = mysql_query($query,$con); 
$check = mysql_num_rows($temp)>0;
于 2013-06-20T05:47:37.747 回答
-1

消除mysql_real_escape_string

$tmp = mysql_real_escape_string('SHOW DATABASES LIKE "cwed"');
var_dump($tmp);
exit();

//string(28) "SHOW DATABASES LIKE \"cwed\"" 
于 2013-06-20T05:38:56.380 回答