真正的转义字符串和PDO

时间:2010-09-15 09:34:02

标签: php mysql pdo

迁移远离mysql库后我正在使用PDO。我用什么来代替旧的real_escape_string函数?

我需要转义单引号,以便它们进入我的数据库,我认为可能有更好的方法来处理这个,而不添加(斜杠)所有字符串。有人可以告诉我应该使用的是什么吗?

3 个答案:

答案 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