# demo

<?php

	ini_set("memory_limit", "-1");

	$dsn = "mysql:host=127.0.0.1;port=3308;dbname=test;charset=utf8mb4";
	$pdo = new PDO($dsn, 'root', '123456');


	$fp = fopen("./export2.csv","w");
	fputcsv($fp, ['ID','编号','用户名', '性别','邮箱', 'QQ','地址','手机号']);


	// 先查询总数
	$sql = "SELECT count(1) as counts FROM `user`";
	$pdostatement = $pdo->query($sql);
	$counts = $pdostatement->fetch(PDO::FETCH_ASSOC);
	var_dump($counts['counts']);

	$nums = 10000; 							// 每次导出数量
	$step = ceil($counts["counts"]/$nums); 	// 循环次数

	for($i = 0; $i < $step; $i++) {
			$start = $i * $nums;
			$sql = "SELECT id,user_sn,username,sex,email,qq,address,phone FROM `user` ORDER BY `id` LIMIT {$start},{$nums}";
			$pdostatement = $pdo->query($sql);
			$result = $pdostatement->fetchAll(PDO::FETCH_ASSOC);

			foreach ($result as $item) {
				fputcsv($fp,$item);
			}

		//每1万条数据就刷新缓冲区
		ob_flush();
		flush();
	}
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36