php – PDO如何准备语句在“内部”工作?

准备好的语句很有用,因为准备“模板”来添加数据可以防止sql注入,我的问题是,这怎么可能?

准备好的陈述如何真正起作用?

在我编写查询后,绑定params并执行查询,会发生什么?

我认为params不会在查询中“插入”,在这种情况下,预处理语句的效果会失败…也许它使用特殊的分隔符来检测查询中数据的开始和结束.如果这是对的,它们是什么?

解决方法:

确切的行为取决于.例如,PDO中的MySQL驱动程序可以完成两个完全不同的操作,具体取决于PDO::ATTR_EMULATE_PREPARES attribute的值:

Enables or disables emulation of prepared statements. Some drivers do
not support native prepared statements or have limited support for
them. Use this setting to force PDO to either always emulate prepared
statements (if TRUE), or to try to use native prepared statements (if
FALSE). It will always fall back to emulating the prepared statement
if the driver cannot successfully prepare the current query.

模拟模式就像您描述的那样:PHP一个sql解析器,用实际值替换占位符.唯一的实际好处是代码更清晰,更易于维护.

Native模式基本上在两个独立的通道中将代码和数据发送到服务器.数据可以按原样发送(即使在二进制模式下).这需要客户端和server支持.优点包括安全性,带宽节省以及解析sql代码一次并使用不同数据集运行多次的可能性.实际实施取决于DBMS.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...