我要写一个SQL泡泡器来玩。
为了保证查询安全,我必须引用值,例如,值"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对象的情况下引用字符串? 或者另一种在没有连接的情况下引用字符串的方法?
对于非标准设置,在不了解如何使用字符串(包括知道数据库服务器和连接将使用哪种编码)的情况下转义字符串可能会失败。这就是为什么如果没有数据库,mysql_real_escape_string()
实际上会尝试建立与数据库的连接,如果不成功,它将引发E_WARNING
。
换句话说:您需要了解有关数据库的一些信息,以便正确转义字符串。这就是您需要连接的原因。
你将以
非常错误的方式编写一个SQLBuilder。实际上,出于某种原因,您选择了石器时代的技术来构建。
查询生成器实际要做的是为实际数据构建带有占位符的查询。
而查询运行器必须接受查询旁边的数据数组。
就这么简单。