繁体   English   中英

mysql_real_escape_string问题?

[英]mysql_real_escape_string problem?

这是有史以来第一次,而且真的很奇怪。

我们已经使用此功能多年,并且在此站点的任何地方都使用此函数。虽然该站点的一个特定部分-它导致了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

怎么了??

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

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

我认为您必须正确指定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());

真正的转义字符串方法确实依赖于数据库连接。 我相信$ database对于应用程序是全局的,因此只需将if语句放在noescape方法中以测试其null是否是这样的:

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

我同意其他人的想法; 但我确实认为您应该检查null。

祝好运

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM