主义引用撇号

时间:2009-11-29 23:25:49

标签: php mysql doctrine

我正在使用Doctrine ORM for php和Zend MVC。我有一个mysql数据库。当我插入数据库时​​,它是转义引号。换句话说,当我进入

<input name="customer_name" value="Test'ed user"> ...

进入我的表单,并分配给一个学说对象并保存。

当我通过mysql命令行查看数据库时,我得到了

Test\'ed user

有没有办法禁用此功能,还是必须在每个变量上调用stripslashes()

2 个答案:

答案 0 :(得分:2)

通过查看php.ini或运行magic_quotes_gpc来检查get_magic_quotes_gpc()是否已启用。

如果您有权访问php.ini,请将其关闭。否则,您需要使用stripslashes()删除脚本中的斜杠。

答案 1 :(得分:1)

您可以通过在页面顶部添加类似内容来完全避免magic_quotes_gpc瘟疫:

if(get_magic_quotes_gpc()) {
    if(!function_exists('stripishlashes_all')) {
        function stripslashes_all(&$data) {
            foreach($data as &$_value) {
                if(is_array($_value)) {
                    stripslashes_all($_value);
                }
                else {
                    $_value = stripslashes($_value);
                }
            }
        }
    }
    stripslashes_all($_REQUEST);
}

当您的代码在无法完全控制的服务器上运行时,或者您计划分发代码时非常有用。