PDO插入语句和逗号分隔符

时间:2012-09-28 09:41:52

标签: php pdo

我有:

INSERT INTO post(title,message) VALUES (:title,:message) 

其中:message值包含一些带符号的随机文本(包括逗号)。

由于逗号符号是语句组件之间的分隔符:

如何转义 :message值以将其包含的逗号保留在字符串上下文中而不被解释为分隔符?

2 个答案:

答案 0 :(得分:4)

你不需要。与PDO一样,使用预准备语句的全部意义在于查询的结构与数据分开发送。这意味着数据中的字符永远不会与查询结构的某些部分混淆。

在这方面,您已经完成了使查询安全所需的一切。

答案 1 :(得分:0)

Prepared statements my friend.

这就是php.net所说的;

  

查询只需要解析(或准备)一次,但可以使用相同或不同的参数多次执行。什么时候   准备好查询,数据库将进行分析,编译和优化   它执行查询的计划。对于复杂查询,此过程可以   占用足够的时间会显着减慢应用程序的速度   如果需要多次重复相同的查询   参数。通过使用准备好的声明,应用程序可以避免   重复分析/编译/优化循环。这意味着准备好了   语句使用更少的资源,因此运行得更快。

     

不需要引用准备语句的参数;驱动程序自动处理这个。如果应用程序专门使用   准备好的语句,开发人员可以肯定没有SQL注入   将发生(但是,如果正在构建查询的其他部分   使用非转义输入,SQL注入仍然可行。)