迁移远离mysql库后我正在使用PDO。我用什么来代替旧的real_escape_string
函数?
我需要转义单引号,以便它们进入我的数据库,我认为可能有更好的方法来处理这个,而不添加(斜杠)所有字符串。有人可以告诉我应该使用的是什么吗?
答案 0 :(得分:38)
您应该使用PDO Prepare
从链接:
为将使用不同参数值多次发出的语句调用PDO :: prepare()和PDOStatement :: execute()通过允许驱动程序协商客户端和/或服务器端缓存来优化应用程序的性能查询计划和元信息,有助于防止SQL注入攻击,无需手动引用参数。
答案 1 :(得分:33)
PDO提供了一种替代方案,旨在将 mysql_escape_string() 替换为 PDO::quote() 方法。
以下是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'
答案 2 :(得分:4)
使用准备好的陈述。那些保持数据和语法分开,这消除了逃避MySQL数据的需要。参见例如this tutorial