什么是PDO的real_escape_string()的等价物?
从MySQL库中迁移之后,我正在使用PDO。 我用什么来代替旧的real_escape_string()
函数?
我需要逃避单引号,所以他们会进入我的数据库,我认为可能有更好的方法来处理这一点,而不添加斜杠到我所有的string。
有人能告诉我我应该用什么?
您应该使用PDO准备
从链接:
为不同参数值多次发布的语句调用PDO :: prepare()和PDOStatement :: execute(),可以通过允许驱动程序协商查询计划的客户端和/或服务器端caching来优化应用程序的性能,元信息,并通过不需要手动引用参数来帮助防止SQL注入攻击 。
PDO提供了一个用PDO :: quote()方法取代mysql_escape_string()的替代方法。
以下是PHP网站的摘录:
<?php $conn = new PDO('sqlite:/home/lynn/music.sql3'); /* Simple string */ $string = 'Nice'; print "Unquoted string: $string\n"; print "Quoted string: " . $conn->quote($string) . "\n"; ?>
上面的代码将输出:
Unquoted string: Nice Quoted string: 'Nice'
使用准备的语句。 那些保持数据和语法分开,这消除了转义MySQL数据的需要。 参见例如本教程 。