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

Php 有没有办法在没有新的PDO对象的情况下引用字符串?,php,pdo,Php,Pdo,我打算写一个SQLBuilder来取乐 为了保证查询的安全,我必须引用这个值,例如,值'12“3'应该是'12\'3',我可以使用mysql\u real\u escape\u string('12“3')来实现这一点。但是,这个函数将从php中删除,因此,我现在使用PDO 但是,如果我想用pdo引用字符串,我有一个新的真正的pdo对象,如下所示: $db = new PDO($connectString); $db->quote('12"3'); 然后,我引用如下: $db = ne

我打算写一个SQLBuilder来取乐


为了保证查询的安全,我必须引用这个值,例如,值'12“3'应该是'12\'3',我可以使用
mysql\u real\u escape\u string('12“3')
来实现这一点。但是,这个函数将从php中删除,因此,我现在使用PDO

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

$db = new PDO($connectString);
$db->quote('12"3');
然后,我引用如下:

$db = new PDO($connectString);
$db->quote('12"3');
这意味着每次引用字符串时都必须连接数据库。 但我真的不想这么做。我只想构建一个查询字符串,别的什么都不想


我只想要一个没有db连接的函数或方法,能够替换
mysql\u real\u escape\u string()


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

在不知道如何使用字符串的情况下对字符串进行转义(这包括知道数据库服务器和连接将使用什么编码)对于非标准设置可能会失败。这就是为什么
mysql\u real\u escape\u string()
实际上会尝试建立到数据库的连接,如果不存在,则会发出
E\u警告


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

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

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


就这么简单。

如果连接未建立,程序员试图转义字符串时抛出异常如何?我想你的意思是使用@hjpotter92:是的,但我真的不想实例化一个对象来连接到数据库,只是为了引用字符串。通常你想避免在SQL语句中转义参数,我nstead建议使用参数化查询。如果您为参数化查询(PHP代码)编写一个生成器,您的工作可能会更有价值,而不是SQL生成器,请记住转义是特定于datbase的问题。我不认为这个问题值得否决。事实上,这是一个明智的问题,显示了新手的足够努力。我在这里看到了许多最糟糕的问题。
mysql\u real\u escape\u string()
尊重连接编码,就像
mysqli\u real\u esc…
正在做的一样……请与我的老朋友愉快相处!;)……但答案是(imo):使用预先准备好的语句。然后在allIndeed不需要引用。它是
mysql\u escape\u string()
这没有考虑连接编码。因此它是“真实”版本。是的,通常使用准备好的语句/变量占位符-但对于这个特定任务,我认为这并不重要-OP不想从应用程序中对数据库运行这些查询,而是创建查询字符串以使用elsewhe呃,我只想写另一个活动记录类或类似的东西,在没有sql查询的情况下操作db,比如迁移之类的东西,所以,我需要更多的占位符,这就是为什么我需要一个SQLBuilder~~~