phpで巨大なDBのデータをCSVで落としたいと思い、
以下のサイトを参考にしたのですが、実際に落としてきたCSVには何も保存されていませんでした。
https://qiita.com/39ff/items/54a14c84e90f4cab4e7b
下記の処理でおかしな点はありますか?
test.php
header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=export.csv"); try { $pdo = new PDO('mysql:dbname=test;host=IP;port=22;charset=utf8mb4', 'root', 'password', [ \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC, \PDO::ATTR_EMULATE_PREPARES => true, \PDO::ATTR_TIMEOUT => 10, \PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => false ]); $stmt = $pdo->prepare("SELECT * FROM `log` WHERE 1"); if ($stmt->execute()) { $stream = fopen('php://temp', 'wb'); stream_filter_prepend($stream, 'convert.iconv.utf-8/cp932'); fputcsv($stream, [ "ID", ],","); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { fputcsv($stream, [ $row['id'], ],","); } fclose($stream); } }catch (\PDOException $e){ //..var_dump($e->getTraceAsString()); }
追記
皆さんのおかげでデバッグ方法がわかったのですが、以下のエラー?が出ました。
これはどのような意味でしょうか?
string(72) "#0 /var/www/html/~/test.php(85): PDOStatement->execute() #1 {main}"