Home  >  Article  >  Backend Development  >  Detailed explanation of the steps for PHP to use PDO to operate mysql to read data

Detailed explanation of the steps for PHP to use PDO to operate mysql to read data

php中世界最好的语言
php中世界最好的语言Original
2018-05-17 14:58:562346browse

This time I will bring you a detailed explanation of the steps for using PHP to operate mysql to read data. What are the precautions for using PHP to operate mysql to read data? The following is a practical case, let's take a look.

Preface

This article mainly introduces the relevant content about PHP using PDO to read large amounts of data from mysql, and share it for your reference and study , not much to say below, let’s take a look at the detailed introduction.

Environment

  • mysql: 5.6.34

  • php: 5.6

  • nginx: php-fpm

Applicable scenarios

Need to process a certain data set business

  • Business export of reading certain data from mysql

  • Need to process a certain mysql business operation update, delete, etc.

  • More operations that require processing a certain data set

pdo key settings

$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();

Generate

Generator, iterative data operation

This generator can be omitted

Try code

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();

Output

1
... //省略部分id
804288
消耗内存:"0.34918212890625M
处理数据行数:254062
success

I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the php Chinese website!

Recommended reading:

ThinkPHP connection database operation case analysis

Detailed explanation of the steps to install the yaf extension in PHP7.1

The above is the detailed content of Detailed explanation of the steps for PHP to use PDO to operate mysql to read data. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn