微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 在PDO中使用mysql_real_escape_string(没有连接到localhost服务器)

所以我相当偏执,并使用PDO的mysql_real_escape_string().我实际上不在PDO中使用预处理语句,所以我必须清理输入.

在我自己的服务器上托管时,我会在本地机器上创建一个非特权用户,这样MysqL_real_escape_string()就不会失败并清空我的变量(嘿,现在已经消毒了!).我意识到这是一个非常失败的解决方案,因为如果数据库没有匹配的字符集,那么根本没有消毒点,但它适用于临时.

现在在我的新主机上,我无法为数据库创建一个unpassworded,nonrivileged用户…并且MysqL_real_escape_string()失败,因为本地计算机上没有MysqL服务器.我无法编辑PHP.ini来设置数据库的hostname / user / pass.

我能做什么?

在我写这篇文章时头脑风暴,我想知道PHP是否允许运行时更改配置…也许…… hrm.
编辑:嗯…… ini_set()? :o

解决方法:

像这样混合两个数据库库是一个坏主意,可能不安全.

MysqL_real_escape_string()需要一个现有的,经典的MysqL_connect()数据库连接(它可以从中获取字符集信息)是完全安全的. PDO连接将是独立的,可能具有不同的字符集设置,最终导致less security

A MysqL connection is required before using MysqL_real_escape_string() otherwise an error of level E_WARNING is generated, and FALSE is returned. If link_identifier isn’t defined, the last MysqL connection is used.

一直使用PDO,别无选择.

如果您不想使用预准备语句,PDO::quote应该是正确的函数

Returns a quoted string that is theoretically safe to pass into an sql statement.

但请注意,即使该函数的手册页也建议使用预准备语句.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐