关于php:真正的转义字符串和PDO

real escape string and PDO

本问题已经有最佳答案,请猛点这里访问。

我在从MySQL库迁移后使用PDO。我用什么来代替旧的real_escape_string功能?

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


你应该使用PDO Prepare

从链接:

Calling PDO::prepare() and PDOStatement::execute() for statements that will be issued multiple times with different parameter values optimizes the performance of your application by allowing the driver to negotiate client and/or server side caching of the query plan and meta information, and helps to prevent SQL injection attacks by eliminating the need to manually quote the parameters.


PDO提供了一种替代方案,旨在用pdo::quote()方法替换mysql_escape_string()。

以下是PHP网站的摘录:

1
2
3
4
5
6
7
8
9
10
<?php
    $conn = new PDO('sqlite:/home/lynn/music.sql3');

    /* Simple string */
    $string = 'Nice';
    print"Unquoted string: $string
"
;
    print"Quoted string:" . $conn->quote($string) ."
"
;
?>

上述代码将输出:

1
2
Unquoted string: Nice
Quoted string: 'Nice'


使用准备好的语句。它们将数据和语法分开,从而消除了对MySQL数据进行转义的需要。请参见例如本教程。