php - Mysql 结果不存储在文件中

标签 php mysql export-to-csv

我有一个 mysql 语句,我想将其获取的数据以选项卡格式存储在 csv 文件中。我已使用以下语句,但当我运行文件并且没有错误文件时,它不会创建和存储结果。

  $mytry =  "SELECT * FROM table WHERE `assigned` = '$id'
    INTO OUTFILE '/inactive/orders.csv'
    FIELDS TERMINATED BY ','
    ENCLOSED BY '\"'
    LINES TERMINATED BY '\n'";

    mysql_query($mytry);

或者有一种方法可以写入目录中的文件而不提示用户下载,这可以工作,但会提示

    $sQuery="SELECT * FROM table WHERE `assigned` = '$id'";

$rResult = mysql_query( $sQuery) or die();
$count = mysql_num_fields($rResult);

$html = '<table border="1"><thead><tr>%s</tr><thead><tbody>%s</tbody></table>';
$thead = '';
$tbody = '';
$line = '<tr>%s</tr>';
for ($i = 0; $i < $count; $i++){      
  $thead .= sprintf('<th>%s</th>',mysql_field_name($rResult, $i));
}


while(false !== ($row = mysql_fetch_row($rResult))){
  $trow = '';

  foreach($row as $value){
   $trow .= sprintf('<td>%s</td>', $value);
  }

  $tbody .= sprintf($line, $trow);

}


header("Content-type: application/vnd.ms-excel; name='excel'");
header("Content-Disposition: filename=exportfile.xls");
header("Pragma: no-cache");
header("Expires: 0");

print sprintf($html, $thead, $tbody);
exit;

最佳答案

您可能想查看以下 PHP 函数:http://php.net/manual/en/function.fputcsv.php

使用查询获取数据,然后将其保存到变量中。然后,使用 fputcsv 将数据存储到文件中。

此外,我不鼓励使用 mysql_query,因为它现在已弃用(以及 mysql_* 系列的其余部分) )。此外,您的代码容易受到 SQL 注入(inject)攻击。阅读有关使用 PDO for database interaction 的信息.

更多推荐阅读内容可帮助您走上正轨:http://www.phptherightway.com/#databases

编辑:根据您在代码示例中显示的内容,您只需将 HTML 页面输出到浏览器,由于 Content-Disposition ,该页面会立即下载您设置的标题。

关于php - Mysql 结果不存储在文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24725979/

相关文章:

PHP 运行 1/2 没有正确验证的 IF 语句

php - 如何从命令行正确运行 php

javascript - 弹出窗口中的文本框值保持为空

javascript - 如何在 php 上获取动态创建的文本框的输入并使用循环将它们存储在 MySQL 中?

php - 多维数组转 CSV

field - 银条3.2 : How to export db fields of only one Dataobject in a CSV file?

php - 如何编写 REST API?

mysql - 子查询中的Order By对外查询排序的影响

mysql - 快速刷新摘要数据以最大限度地减少停机时间

Netlogo 中的 CSV 导出错误