<?php
$server = 'localhost';
$login = 'user';
$password = 'pass';
$db = 'database';
$filename = 'output.csv';
$table = 'table';
mysql_connect($server, $login, $password);
mysql_select_db($db);
$fp = fopen($filename, "w");
$res = mysql_query("SELECT * FROM $table");
// fetch a row and write the column names out to the file
$row = mysql_fetch_assoc($res);
$line = "";
$comma = "";
foreach($row as $name => $value) {
$line .= $comma . '"' . str_replace('"', '""', $name) . '"';
$comma = ",";
}
$line .= "\n";
fputs($fp, $line);
// remove the result pointer back to the start
mysql_data_seek($res, 0);
// and loop through the actual data
while($row = mysql_fetch_assoc($res)) {
$line = "";
$comma = "";
foreach($row as $value) {
$line .= $comma . '"' . str_replace('"', '""', $value) . '"';
$comma = ",";
}
$line .= "\n";
fputs($fp, $line);
}
fclose($fp);
?>
Joomla Web サイトから CSV ファイルにデータをインポートしようとしています。Joomla 拡張機能を使用すると非常に多くのデータベース テーブルが作成され、状況がより複雑になります。
上記のコードを試してみたところ、1 つのデータベース テーブルのデータを使用して CSV ファイルを作成するという、希望どおりの初期結果が得られました。今、私が理解しようとしているのは、同じファイルを作成する方法です。しかし、異なるが関連するテーブルからデータを取得しています。
状況は次のとおりです。
- 表 1 には、表 2、3 で追跡できる ID が含まれています。
- 一部のフィールドは不要です。選択されたフィールドのみがエクスポートされます。
どうすればいいですか?
$table1 = 'database_table1';
$table2 = 'database_table2';
$table3 = 'database_table3';
$table4 = 'database_table4';
$res = mysql_query("SELECT table1_field1, table1_field2 FROM $table1 t1
INNER JOIN $table3 t3 table2_field1, table2_field2, table2_field3, table2_field4 ON t1.id = t3.pid
INNER JOIN $table2 t2 table3_field1, table3_field2, table3_field3, table3_field4, table3_field5 ON t1.id = t2.content_id
INNER JOIN $table4 t4 table4_field1, table4_field2 ON t3.id = t4.review_id
");