-4

我打算写一个 SQLBuilder 来取乐。

为了保证查询安全,我必须引用值,例如,值 '12"3' 应该是 '12\"3',我可以使用它mysql_real_escape_string('12"3')来做到这一点。但是,这个函数将从 php 中删除,所以,我现在使用 PDO。

但是,如果我想用 pdo 引用字符串,我有一个新的真正的 pdo 对象,如下所示:

$db = new PDO($connectString);

然后,我像这样引用它:

$db->quote('12"3');

这意味着我每次引用字符串时都必须连接数据库。但我真的不想这样做。我只想构建一个查询字符串,没有别的。

我只想要一个没有数据库连接的函数或方法能够替换mysql_real_escape_string()

那么,有没有办法在没有新的 PDO 对象的情况下引用字符串?或另一种在没有连接的情况下引用字符串的方式?

4

2 回答 2

2

在不知道如何使用的情况下转义字符串(这包括知道数据库服务器和连接将使用什么编码)对于非标准设置可能会失败。这就是为什么mysql_real_escape_string()如果没有数据库,实际上会尝试建立与数据库的连接,如果不成功,它将引发E_WARNING.

换句话说:您需要对数据库有所了解,才能正确转义字符串。这就是你需要连接的原因。

于 2013-10-03T07:48:10.540 回答
0

您将要以异常错误的方式编写 SQLBuilder。实际上,出于某种原因,您选择了石器时代技术作为基础。

您的查询构建器实际上必须做的是为实际数据构建带有占位符的查询。
而查询运行器必须接受查询旁边的数据数组。

就如此容易。

于 2013-10-03T10:39:44.670 回答