mysql_real_escape_string问题?

时间:2011-09-03 06:42:27

标签: php mysql

这是第一次发生这种情况,而且非常奇怪。

我们多年来一直在使用这个功能,我们在这个网站的任何地方都使用它...虽然网站的一个特定部分 - 它导致mySQL错误。

function noescape($str) {
$noescape = mysql_real_escape_string($str);
return $noescape;
}

$email = noescape($_POST['email']);

mysql_query("INSERT INTO `contact` (`email`) VALUES('" . $email . "') ", $database) or die(mysql_error());

是的,$database已定义且是正确的连接信息 - 它用于网站的其他区域。

错误:

  

警告:mysql_real_escape_string()   [function.mysql-real-escape-string]:无法链接到服务器   在第27行的/home/user/public_html/config.php中建立

事实上,错误发生在这一行:

$email = noescape($_POST['email']);

这与查询无关。

我发现了这个:http://www.resourcebookingpro.com/index.php?option=com_kunena&Itemid=66&func=view&catid=3&id=841#844

有什么问题?

3 个答案:

答案 0 :(得分:1)

  

页面上方的内容使用相同的连接,并且工作正常......

好吧,您必须检查此行上方的代码,以查看连接的关闭位置。

答案 1 :(得分:-2)

我认为你必须正确指定mysql链接(如评论中所述)

function noescape($str) {
global  $database;
$noescape = mysql_real_escape_string($str, $database);
return $noescape;
}

$email = noescape($_POST['email']);

mysql_query("INSERT INTO `contact` (`email`) VALUES('" . $email . "') ", $database) or die(mysql_error());

答案 2 :(得分:-2)

真正的转义字符串方法确实依赖于数据库连接。我相信$ database是应用程序的全局数据库,所以只需在noescape方法中输入一个if语句来测试它的null是否如此:

if($database)
{
  $noescape = mysql_real_escape_string($str, $database);
  return $noescape;
}

我同意其他人的想法;但我认为你应该检查是否为null。

祝你好运