设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 重新 试卷 文件
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

MySQL运维实战之PHP访问MySQL,你使用对了吗(2)

发布时间:2019-03-12 11:04 所属栏目:21 来源:阿里云云栖社区
导读:验证两种prepare模式 服务端prepare模式( ATTR_EMULATE_PREPARES = false) ?php $dbms='mysql';//数据库类型 $host='xxx';//数据库主机名 $dbName='test';//使用的数据库 $user='xx';//数据库连接用户名 $pass='123

验证两种prepare模式

  •  服务端prepare模式( ATTR_EMULATE_PREPARES = false) 
  1. <?php  
  2. $dbms='mysql'; //数据库类型  
  3. $host='xxx'; //数据库主机名  
  4. $dbName='test'; //使用的数据库  
  5. $user='xx'; //数据库连接用户名  
  6. $pass='123456'; //对应的密码  
  7. $dsn="$dbms:host=$host;dbname=$dbName";  
  8. try {  
  9.  $pdo = new PDO($dsn, $user, $pass); //初始化一个PDO对象  
  10.  $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);  
  11.  echo "----- prepare begin -----  
  12. ";  
  13.  $stmt = $pdo->prepare("select * from test.chanpin where id = ?");  
  14.  echo "----- prepare after -----  
  15. ";  
  16.  $stmt->execute([333333]);  
  17.  echo "----- execute after -----  
  18. ";  
  19.  $rs = $stmt->fetchAll();  
  20. } catch (PDOException $e) {  
  21.  die ("Error!: " . $e->getMessage() . "<br/>");  

strace -s200 -f php mysql1.php 跟踪

大家可以看到这个模式下,prepare的时候,是将query+占位符 发送给服务端的:

  •  本地prepare模式 (ATTR_EMULATE_PREPARES = true ) 
  1. <?php  
  2. $dbms='mysql'; //数据库类型  
  3. $host='xx'; //数据库主机名  
  4. $dbName='test'; //使用的数据库  
  5. $user='xx'; //数据库连接用户名  
  6. $pass='123456'; //对应的密码  
  7. $dsn="$dbms:host=$host;dbname=$dbName";  
  8. try {  
  9.  $pdo = new PDO($dsn, $user, $pass); //初始化一个PDO对象  
  10.  $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,true);  
  11.  echo "----- prepare begin -----  
  12. ";  
  13.  $stmt = $pdo->prepare("select * from test.chanpin where id = ?");  
  14.  echo "----- prepare after -----  
  15. ";  
  16.  $stmt->execute([333333]);  
  17.  echo "----- execute after -----  
  18. ";  
  19.  $rs = $stmt->fetchAll();  
  20. } catch (PDOException $e) {  
  21.  die ("Error!: " . $e->getMessage() . "<br/>");  

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读