我有不同的表的myssql数据库.表之间的数据是链接的,我使用userid检索并显示它们.我使用PHP MYSQLi中的引用显示数据库中的所有表
但是如何将此信息导出为csv文件?我试过而不是echo将其更改为字符串并将字符串打印到csv文件但它无法正常工作.
我也试过这个例子:http: //sudobash.net/php-export-mysql-query-to-csv-file/
但我可以看到数据,但最重要的是"<font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'>"
csv文件中还有垃圾(如等).
还有另一种方法吗?
dcd*_*181 14
如果要将每个MySQL行写入CSV文件,可以使用内置的PHP5函数 fputcsv
$result = mysqli_query($con, 'SELECT * FROM table');
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
$fp = fopen('file.csv', 'w');
foreach ($row as $val) {
fputcsv($fp, $val);
}
fclose($fp);
Run Code Online (Sandbox Code Playgroud)
对于写入的每一行,应该返回逗号分隔的字符串file.csv:
row1 val1, row1 val2
row2 val1, row2 val2
etc..
Run Code Online (Sandbox Code Playgroud)
另外,请务必检查您要写入的目录的权限.
RCN*_*eil 13
这是一个使用MySQLi fetch_fields函数合并标题或字段名称的解决方案-
$query = "SELECT * FROM table";
$result = $db->query($query);
if (!$result) die('Couldn\'t fetch records');
$headers = $result->fetch_fields();
foreach($headers as $header) {
$head[] = $header->name;
}
$fp = fopen('php://output', 'w');
if ($fp && $result) {
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="export.csv"');
header('Pragma: no-cache');
header('Expires: 0');
fputcsv($fp, array_values($head));
while ($row = $result->fetch_array(MYSQLI_NUM)) {
fputcsv($fp, array_values($row));
}
die;
}
Run Code Online (Sandbox Code Playgroud)
这也是一个不同答案的修改,其中提出了类似的解决方案,但标题部分对我不起作用,所以我改变了检索它们的方法.归功于@Jrgns
| 归档时间: |
|
| 查看次数: |
57392 次 |
| 最近记录: |