有没有办法在没有新的真实PDO对象的情况下引用字符串?

时间:2013-10-03 07:10:07

标签: php pdo

我打算写一个SQLBuilder来玩。

为了保证查询安全,我必须引用该值,例如,值'12“3'应该是'12 \”3',我可以使用mysql_real_escape_string('12"3')来执行此操作。但是,这个函数将从php中删除,所以,我现在正在使用PDO。

但是,如果我想用pdo引用字符串,我有一个像这样的真正的pdo对象:

$db = new PDO($connectString);

然后,我这样引用它:

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

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

我只想要一个没有db连接的函数或方法来替换mysql_real_escape_string()

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

2 个答案:

答案 0 :(得分:2)

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

换句话说:你需要了解一些关于数据库的东西,才能正确地转义字符串。这就是你需要连接的原因。

答案 1 :(得分:0)

您将以异常错误的方式编写SQLBuilder。实际上,出于某种原因,你选择石器时代技术来构建。

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

就这么简单。

相关问题