我处于一个奇怪的情况,在我的服务器中,当我将字符串插入数据库mysql_real_escape_string
然后我打印它时,一切都很好,看起来 mysql 会自动生成斜杠!例如,我保存tes't
然后打印它:tes't
但是在我安装了 php 4.2 的本地主机中,我给出tes\'t
了相同的代码。mysql有什么奥秘??想知道如何将数据插入和选择到数据库安全和干净,永远一次!因为它让我真的很困惑!
问问题
2021 次
2 回答
1
它可能取决于 PHP 的魔术引号设置,这更像是 PHP 的奥秘而不是 MySQL 的奥秘 :)mysql_real_escape_string()
您可以使用更通用的函数而不是 using :
function escape($s)
{
if (get_magic_quotes_gpc()) $s=stripslashes($s);
return mysql_real_escape_string($s);
}
使用此代码,您可以检查该选项是否处于活动状态并执行第一次剥离。
于 2012-06-19T12:52:38.403 回答
1
您可能打开了魔术引号。而不是试图解决这个问题,你应该把它关掉。如果您无权访问服务器,您仍然应该以全局方式处理它。例如:
if ( ( function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc() ) || ini_get('magic_quotes_sybase') ) {
foreach ( $_POST as $k => $v ) { $_POST[$k] = stripslashes($v); }
foreach ( $_GET as $k => $v ) { $_GET[$k] = stripslashes($v); }
foreach ( $_COOKIE as $k => $v ) { $_COOKIE[$k] = stripslashes($v); }
}
将它放在代码的开头可以确保每次都处理魔术引号,这意味着您不必跟踪必须处理魔术引号的位置。
此处注释中的更多信息:http ://www.php.net/manual/en/function.get-magic-quotes-gpc.php
于 2012-06-19T12:57:57.587 回答