到目前为止,我常常使用转义函数和客户端使用sql命令与服务器通信的范例:
select * from table where name = 'O\'Hara';
在PDO的情况下,您只需创建一些模板并使用不同的数据提供该模板,这种模式很可能会被破坏。如果没有,PDO就必须自己调用转义函数,并且没有理由使用它(与自己逃避它没有任何不同)。
因此,如果客户端和服务器之间的SQL通信范例被破坏,它是如何工作的?查询是否不再作为SQL命令发送?它是MySQL协议的一些扩展吗? MySQL协议远比SQL会话更丰富吗?它是否有效,例如使用远程服务器?与裸SQL命令相比,此功能是否有任何限制?
我试过浏览mysql文档,但没有发现任何相关内容。
答案 0 :(得分:1)
<强> Therory 强>:
准备语句确实是协议级别的一项功能,这意味着客户端首先发送查询模板,然后发送第二个请求中的参数。此外,客户端可以为相同的 - 已经准备好的 - 查询发送多个数据请求。 (这就是名字的原因)
<强>现实强>:
PDO代码以某种方式编写,它不利用协议功能,它实际上只是转义值并用转义值替换语句中的占位符,然后将常规SQL查询发送到服务器。