PHP使用PDO操作mysql讀取資料步驟詳解

php中世界最好的语言
發布: 2023-03-26 11:52:01
原創
2346 人瀏覽過

這次帶給大家PHP使用PDO操作mysql讀取資料步驟詳解,PHP使用PDO操作mysql讀取資料的注意事項有哪些,下面就是實戰案例,一起來看一下。

前言

本文主要介紹了PHP利用PDO從mysql讀取大量資料處理的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。

環境

  • mysql: 5.6.34

  • php: 5.6

  • nginx: php-fpm

適用場景

需要處理一定資料集業務

  • 從mysql讀取一定資料的業務導出

  • 一次需要處理一定的mysql業務作業更新刪除等

  • 更多需要處理一定資料集的動作

pdo 關鍵設定

$dbh = new \PDO($dsn, $user, $pass);
# 关键设置,如果不设置,php依旧会从pdo一次取出数据到php
$dbh->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
//perpare里的游标属性不是必须的
$sth = $dbh->prepare("SELECT * FROM `order`", array(\PDO::ATTR_CURSOR => \PDO::CURSOR_SCROLL));
$sth->execute();
登入後複製

生成器

生成器,迭代資料操作

本生成器可省略

##嘗試程式碼#

class Test {
 public function test()
 {
  set_time_limit(0);
  $dbms='mysql';  //数据库类型
  $host=C('DB_HOST'); //数据库主机名
  $dbName=C('DB_NAME'); //使用的数据库
  $user=C('DB_USER');  //数据库连接用户名
  $pass=C('DB_PWD');   //对应的密码
  $dsn="$dbms:host=$host;dbname=$dbName";
  $dbh = new \PDO($dsn, $user, $pass);
  $dbh->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
  $sth = $dbh->prepare("SELECT * FROM `order`");
  $sth->execute();
  $i = 0;
  $newLine = PHP_SAPI == &#39;cli&#39; ? "\n" : &#39;<br />&#39;;
  foreach ($this->cursor($sth) as $row) {
//   var_dump($row);
   echo $row[&#39;id&#39;] . $newLine;
   $i++;
  }
  echo "消耗内存:" . (memory_get_usage() / 1024 / 1024) . "M" . $newLine;
  echo "处理数据行数:" . $i . $newLine;
  echo "success";
 }
 public function cursor($sth)
 {
  while($row = $sth->fetch(\PDO::FETCH_ASSOC)) {
   yield $row;
  }
 }
}
$test = new Test();
$test->test();
登入後複製

輸出

1
... //省略部分id
804288
消耗内存:"0.34918212890625M
处理数据行数:254062
success
登入後複製
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

ThinkPHP連線資料庫運算元列分析

#PHP7.1內安裝yaf擴充步驟詳解

以上是PHP使用PDO操作mysql讀取資料步驟詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!