人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHP MySQL

テーブル名は分かるのですが、そのテーブルの構造(カラム数など)は分かりません。

テーブル名だけでそのテーブルのデータをMS Excelに変換するスクリプトは可能でしょうか?(ソースplz)

ちなみに日本語が含まれ、特殊文字(”など)も含まれます。UTF8です。

よろしくお願いします。

●質問者: esecua
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Excel MySQL PHP カラム スクリプト
○ 状態 :キャンセル
└ 回答数 : 5/5件

▽最新の回答へ

1 ● b-wind

テーブル名が分かればカラム名は取得できます。

MySQL :: MySQL 4.1 リファレンスマニュアル :: 4.6.8.1 データベース、テーブル、カラム、およびインデックスに関する情報の取得

◎質問者からの返答

np


2 ● Lu-such

$table = 'tablename';

$sql = 'show fields from '.$table;

$result = mysql_query($sql, CONNECTION);

$fieldAr = array();

while ($ret = mysql_fetch_assoc($result)){

foreach($ret as $key => $fields){

$fieldAr[$key][] = $fields;

}

}

print_r ( $fieldAr) ;

特殊文字(”など)はどうなるかわかりませんがこれでどうでしょう。

◎質問者からの返答

データをMS Excelに変換するスクリプトは可能でしょうか?

no point


3 ● pahoo

MySQL の CSVエクスポート機能を利用します。

スクリプト冒頭の4つの変数は、ご利用の環境に合わせて設定してください。

<?php
$hostname = 'MySQLホスト名';
$username = 'MySQLユーザー名';
$password = 'MySQLパスワード';
$csvfname = '出力CSVファイル名';

//開始処理
$con = mysql_connect($hostname, $username, $password) or die(mysql_error());
mysql_select_db('dbname') or die(mysql_error());

//出力をシフトJISに
$sql = "set character set sjis;";
mysql_query($sql) or die(mysql_error());

//CSVファイル出力
$sql = "select * from database into outfile \"" . $csvfname . "\" fields terminated by \',\' enclosed by \" lines terminated by \'\\r\\n\';"
mysql_query($sql) or die(mysql_error());

//終了処理
mysql_free_result($res); 
mysql_close($conn); 
?> 
◎質問者からの返答

レンサバな為、CSVエクスポート機能は利用できません。


4 ● chuken_kenkou

MySQLの質問をする場合は、バージョンを明記してください。

MySQL 5.0以降であれば、information_schemaが実装されています。

MySQL :: MySQL 5.1 リファレンスマニュアル :: 21.3 INFORMATION_SCHEMA COLUMNS テーブル

これを活用することで、SQLで情報を得られます。

select
 *
 from information_schema.columns
 where table_name='t1'
 order by ordinal_position

phpで行うのが、大前提なのでしょうか?

EXCELで得ることが目的なら、MyODBCを使って得られます。

MySQL V5 関連記事一覧 - [データベース]All About


5 ● sphire

>テーブル名は分かるのですが、そのテーブルの構造(カラム数など)は分かりません。

カラム数は分からなくても、CSV等は作れますよね。問題ないです。

>テーブルのデータを

カラム名の入ったヘッダ行は不要と判断しました。

>MS Excelに変換する

「ダブルクリックしたらExcelで開ける」でOKでしょうか?

>ちなみに日本語が含まれ、特殊文字(”など)も含まれます。

改行は無い、と判断しました。

一番簡単な方法は、TSV(タブ区切りテキスト)にして、拡張子.xlsで保存すること。

ExcelはSJISでないと文字化けしますので、文字コードはSJISに変換することになります。

<?php

$target = './hoge.xls';

$db = MDB2::connect(適切なパラメータ);
$result = $db->queryAll("SELECT * FROM hoge");

foreach($result as $row){
 $tsv_row = implode("\t", $row) . "\r\n";
 $sjis_tsv_row = mb_convert_encoding($tsv_row, 'SJIS-win', 'UTF-8');
 file_put_contents($target, $sjis_tsv_row, FILE_APPEND|LOCK_EX);
}

?>
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ