結果の確認として、Excel が簡単なので、SHIFT_JIS その他を最適化していますが、利用先に合わせて変更すればいいと思います。最初1行目に列名リストを出力していたのですが、Excel の仕様で最初に ID という文字があるとエラーになるので省いています。
<?php
// **************************************
// MIME と キャラクタセットを設定
// **************************************
header( "Content-Type: text/html; Charset=utf-8" );
// **************************************
// キャッシュを無効にするヘッダ
// **************************************
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );
// **************************************
// グローバル変数
// **************************************
$server = 'データベースサーバー';
$db_name = 'データーベース';
$user = 'ユーザー';
$password = 'パスワード';
print "処理開始<br>";
// **************************************
// データベース接続
// **************************************
$connect = @ new mysqli($server, $user, $password, $db_name);
if ($connect->connect_error) {
die('Connect Error (' . $connect->connect_errno . ') '
. $connect->connect_error);
}
// **************************************
// クライアントのキャラクタセット
// **************************************
$connect->set_charset("cp932");
// **************************************
// WordPress の投稿データ
// **************************************
$query = "select * from wp_posts";
// クエリ
$result = $connect->query($query);
if ( !$result ) {
die('クエリーに誤りがあります : ' . $connect->error );
}
// **************************************
// 列名とデータ型を取得
// **************************************
$finfo = $result->fetch_fields();
$name = array();
$type = array();
foreach ($finfo as $val) {
$name[] = $val->name;
$type[] = $val->type;
}
// **************************************
// フィールド数
// **************************************
$field_count = $connect->field_count;
$file = "";
while ($row = $result->fetch_array(MYSQLI_BOTH)) {
// CSV の一行の作成
$csv = "";
for( $i = 0; $i < $field_count; $i++ ) {
if ( $csv != "" ) {
$csv .= ",";
}
// 数値型
// TIMESTAMP型(7) を使用している場合は変更が必要です
if ( $type[$i] < 10 || $type[$i] == 246 || $type[$i] == 16 ) {
$csv .= $row[$i];
}
else {
// データ内のダブルクォートとフィールドを囲むダブルクォート
$csv .= "\"" . str_replace('"', '""',"$row[$i]") . "\"";
}
}
// データ内の改行コード
$csv = str_replace("\r\n", "\\r\\n", $csv);
$csv = str_replace("\r", "\\r", $csv);
$csv = str_replace("\n", "\\n", $csv);
// CSV としての一行を追加
$file .= "{$csv}\r\n";
}
// **************************************
// ファイルに出力
// **************************************
file_put_contents("table.csv", $file);
?>
関連する記事
参考 MySQL TIMESTAMP / MySQLTutorial
|
|
【PHP + データベースの最新記事】
- PDO MySQL のバインドを使用した標準的な記述( ロリポップ )
- PHP で MySQLをテストする為のソースコード
- PHP で ODBC 関数を使って MS Access( データベース )にアクセスして結果を JSON 文字列として出力する
- Windows 環境の MySQL + PHP で、ODBC ドライバを使用してデータを取得する場合の3パターン
- PHP : SQLインジェクション対策付きの、MySQL のデータを JSON で返す自家製 API テスト用のテンプレート3パターン
- PHP で 自家製 API を作成して jQuery の簡単なコードで更新処理を行うサンプル
- PHP : PIPES_AS_CONCAT を使用して、CSV 作成処理をサーバの負荷にして高速に WrodPress のデータを Excel で読み込める CSV として保存する処理
- PHP : WrodPress のデータを insert SQL で保存する処理
- PHP で MySQLi 使用時の データ型定数( MYSQLI_TYPE_ ) の詳細 ( バックアップ用 insert 文を作る為 )
- PHP から MySQL の簡易的なバックアップを取得する( 但し、DBサーバがディスクへの書き込み権限を持っている必要があります )
- PHP : JSON 文字列で定義されたフォーマットを元に、そのフォーマットにセットされた配列を使って insert と update の SQL 文を自動作成。
- PHP : PDO のエラー処理
- PHPのマニュアルにある、SQLインジェクション攻撃の例
- PHP : SQLite3 を PDO の ODBC 経由で読み込み
- PHP : 5.3 / 5.2.11 用共用 sqlite3(日本語テーブル) 読み込み
- PHP : Oracle を処理する COM を使ったクラス






