PHP 使用 Mysqli 的 prepare 语句有什么好处?

46 篇文章 0 订阅

http://zhidao.baidu.com/link?url=9C40AoCTrSNIfGCVB3nwTdOCs_M5SWBLfA-HsInPEFf16C5vfT-NixRdAW62YuO0cTX_RYANzrvONtj_YzzBIRHqMgaMGp-Y-dS8rXt15Ru


好处:
(1)解析查询只有一次
(2)执行一些查询优化步骤只有一次
(3)通过二进制协议发送参数比送他们为ASCII文本更有效
比如DATE,对于准备之后,发送日期只用3个字节;如果没有准备,日期必须以字符串的形式发送,需要数据库方再解析,这样需要发送10个字节。
(4)只有参数(不是整个查询文本)需要为每个执行要发送
(5)的MySQL直接存储parameteres到服务器上的缓冲区
(6)安全性也有帮助,就没有必要逃避或引用值。

坏处:
(1)本地到一个连接,以便另一个连接不能再使用
(2)不能使用MySQL查询缓存(5.1版本之前)
(3)不总是更有效,如果你使用它只有一次
(4)存储函数中不能使用(存储过程是可以的)
(5)有可能会导致“泄漏”如果你忘记释放它

PHP 使用 Mysqli 的 prepare 语句有什么好处?

终极至尊TA2543 | 浏览 86 次 2016-04-18 15:43
2016-05-26 11:08 最佳答案
好处:
(1)解析查询只有一次
(2)执行一些查询优化步骤只有一次
(3)通过二进制协议发送参数比送他们为ASCII文本更有效
比如DATE,对于准备之后,发送日期只用3个字节;如果没有准备,日期必须以字符串的形式发送,需要数据库方再解析,这样需要发送10个字节。
(4)只有参数(不是整个查询文本)需要为每个执行要发送
(5)的MySQL直接存储parameteres到服务器上的缓冲区
(6)安全性也有帮助,就没有必要逃避或引用值。

坏处:
(1)本地到一个连接,以便另一个连接不能再使用
(2)不能使用MySQL查询缓存(5.1版本之前)
(3)不总是更有效,如果你使用它只有一次
(4)存储函数中不能使用(存储过程是可以的)
(5)有可能会导致“泄漏”如果你忘记释放它

BaLeNozq

采纳率:74%擅长:JavaScript数据库DB

其他回答

这是PHP官网的解释:

 

Calling PDO::prepare()  and  PDOStatement::execute()  for  statements that will be issued multiple times with different parameter values optimizes the performance of your application by allowing the driver to negotiate client  and / or  server side caching of the query plan  and  meta information,  and  helps to prevent SQL injection attacks by eliminating the need to manually quote the parameters.
PDO will emulate prepared statements/bound parameters  for  drivers that  do  not natively support them,  and  can also rewrite named  or  question mark style parameter markers to something more appropriate,  if  the driver supports one style but not the other.


大致意思是说有两个好处:

  1. 可以通过驱动让服务端缓存查询计划,从而提高查询效率;

  2. 可以防止SQL注入,自动转义一些特殊字符.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值