MySQL & PDO:关于效率

Posted

技术标签:

【中文标题】MySQL & PDO:关于效率【英文标题】:MySQL & PDO : about efficiency 【发布时间】:2012-04-12 23:21:57 【问题描述】:

我有以下代码:

<?php
try 
  # mysql with PDO_MYSQL
  $DBH = new PDO("mysql:host=*****;dbname=****", "****", "*****");
  $DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

  # statement handle (prevents injection)
  $STH = $DBH->prepare("SELECT Adresse FROM Agences");
  $STH->execute();

  # statement handle (prevents injection)
  $STHNAMES = $DBH->prepare("SELECT `numero-agence` FROM Agences");
  $STHNAMES->execute();

  $storeArray = Array();
  $nameArray = Array();
  while ($row = $STH->fetch()) 
      $storeArray[] =  $row['Adresse'];  
  

  while ($row = $STHNAMES->fetch()) 
      $nameArray[] =  $row['numero-agence'];  
  

  echo json_encode(
    Array("theAddress" => $storeArray,
    "theName" => $nameArray)
  );

catch(PDOException $e) 
    echo 'There was an issue inserting thing into database: '.$e->getMessage();

?>

我的问题是:有没有办法将这两个查询结合起来,并且仍然有一个关联数组以 JSON 编码发送回客户端? (我正在使用 ajax 调用查询这部分 PHP,并且需要结果数据)

谢谢。

【问题讨论】:

【参考方案1】:

可以在同一个查询中完成:

     # statement handle (prevents injection)
      $STH = $DBH->prepare("SELECT Adresse, `numero-agence` FROM Agences");
      $STH->execute();

      $storeArray = Array();
      $nameArray = Array();
      while ($row = $STH->fetch()) 
          $storeArray[] =  $row['Adresse'];  
          $nameArray[] =  $row['numero-agence'];  
      

【讨论】:

以上是关于MySQL & PDO:关于效率的主要内容,如果未能解决你的问题,请参考以下文章

php中使用mysqli和pdo扩展,测试mysql数据库的执行效率。

php中使用mysqli和pdo扩展,测试连接mysql数据库的效率。

预处理语句

mysql关于char和varchar的查询效率问题

pdo

pdo