[英]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.