请问,在PHP中将MySQL查询转换为CSV最有效的方法是什么?

最好避免使用临时文件,因为这会降低可移植性(需要目录路径和设置文件系统权限).

CSV还应包括一行字段名.

推荐答案

SELECT * INTO OUTFILE "c:/mydata.csv"
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY "\n"
FROM my_table;

(the documentation for this is here: 100)

或者:

$select = "SELECT * FROM table_name";

$export = mysql_query ( $select ) or die ( "Sql error : " . mysql_error( ) );

$fields = mysql_num_fields ( $export );

for ( $i = 0; $i < $fields; $i++ )
{
    $header .= mysql_field_name( $export , $i ) . "\t";
}

while( $row = mysql_fetch_row( $export ) )
{
    $line = '';
    foreach( $row as $value )
    {                                            
        if ( ( !isset( $value ) ) || ( $value == "" ) )
        {
            $value = "\t";
        }
        else
        {
            $value = str_replace( '"' , '""' , $value );
            $value = '"' . $value . '"' . "\t";
        }
        $line .= $value;
    }
    $data .= trim( $line ) . "\n";
}
$data = str_replace( "\r" , "" , $data );

if ( $data == "" )
{
    $data = "\n(0) Records Found!\n";                        
}

header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=your_desired_name.xls");
header("Pragma: no-cache");
header("Expires: 0");
print "$header\n$data";

Php相关问答推荐

根据在WooCommerce购物车和 checkout 中 Select 的送货方式显示快捷代码内容

获取并判断WooCommerce用户订阅结束日期

目标类[Set_Locale]不存在.拉威尔

如何使用php一次更新两个数据库中的MySQL表

按列值将二维数组排序为不超过N个的递增组

WooCommerce在购物车项目中复制产品而不增加产品数量

Azure应用程序无法访问共享文件夹

Symfony框架锁定和.env设置

Filament v3:具有 hasMany 和 BelongsTo 的关系管理器

使用简码在 WooCommerce 我的帐户中显示一些用户数据

在 WordPress 中将自定义帖子类型永久链接设置为 root

如何正确判断 PHP 是否已正确配置为使用 DOMDocument?

我的功能以舒适的方式显示数组 struct

根据WooCommerce中的产品重量更改简单产品的输入数量步值

使用现有的htaccess的PHP路由脚本

Laravel 路由参数中的 ":" 是什么?

在 Symfony 测试中何时使用 TestCase 而不是 KernelTestCase

Laravel Factory - 在单列中生成具有随机迭代量的假 json 数组数据

Laravel Websockets 错误:(WebSocket 在建立连接之前关闭)

WooCommerce 按 ID 限制产品