2013-06-20 96 views
-2

如何1作品和2不?问题与MySQL php

$temp = mysql_query("SHOW DATABASES LIKE "."'"."cwed"."'",$con); 
$check = mysql_num_rows($temp)>0; 
$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中给出:** * \ inline 21.

所以我想通了,我的查询返回一个布尔而不是资源这将发生在这种情况下$ temp是布尔而不是资源的值为0.当我在我的终端检查它说,该集是0.所以如何在这种情况下,我得到布尔而不是0

+0

检查错误(mysql_error());' – Rikesh

+0

我不知道你为什么在这里使用mysql_real_escape_string?通过默默无闻的安全性不是一个好主意 –

+1

[**请不要在新代码中使用'mysql_ *'函数**](http://bit.ly/phpmsql)。他们不再被维护[并被正式弃用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。如果你选择PDO,[这里是一个很好的教程](http://www.brightmeup.info/article.php?a_id=2)。 –

回答

5

问题是在你的第二个例子mysql_escape_string电话它是淹没你的报价。回声出tmp目录,你会看到,它的转化

SHOW DATABASES LIKE "cwed" 

SHOW DATABASES LIKE \"cwed\" 
+2

你快速\t 43天和7.6K代表...真棒+1 –

+2

我失去了我的药物和强迫症是踢在:) – Orangepill

+0

我想它应该逃脱它显示DATABASES LIKE \“cwed \”这样tat msq_query可以稍后在使用时忽略它。我知道\将添加 – ebdo

-1

删除mysql_real_escape_string

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

//string(28) "SHOW DATABASES LIKE \"cwed\"" 
+0

请解释它为什么会起作用......因为op告诉他,当他不使用MRES时,它的工作 –

+0

看到我编辑的帖子。 –

1

mysql_real_escape_string()调用MySQL的库函数mysql_real_escape_string,其中前添加反斜杠以下字符:\x00\n\r,\,'"\x1a。它来自手册。 这就是你的代码无法正常工作的原因。

你的代码应该是: - 使用'的mysql_query($ TMP,$ CON)或死亡

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

@nullpoite谢谢。 –