Php 将数据从mysql表导出到.csv文件

Php 将数据从mysql表导出到.csv文件,php,mysql,excel,csv,Php,Mysql,Excel,Csv,我有一个mysql表,其中存储了用户的手机号码,现在我只想使用php将这些号码导出到一个.csv文件中,我不想在每个号码的末尾使用逗号。现在假设我的表中存储了接下来的3个数字: 123456789 +966123456789 00966123456789 现在,如果我使用下一个代码: $result = mysql_query("SELECT cellphone FROM user"); if ($result) { while ($row = mysql_fetch_array(

我有一个mysql表,其中存储了用户的手机号码,现在我只想使用php将这些号码导出到一个.csv文件中,我不想在每个号码的末尾使用逗号。现在假设我的表中存储了接下来的3个数字:

123456789
+966123456789  
00966123456789
现在,如果我使用下一个代码:

$result = mysql_query("SELECT cellphone FROM user");
if ($result) {
    while ($row = mysql_fetch_array($result)) {
        $cellphones .= $row["cellphone"] . ",\r\n"; //note the comma here
    }
}

$filename = "cellphones_" . date("Y-m-d_H-i");
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header("Content-disposition: filename=" . $filename . ".csv");
print $cellphones;
exit;
我将得到一个.csv文件,其中的数字如下:

+966123456789,
00966123456789,
123456789,
但是如果我使用相同的代码,没有逗号,如下所示:

    $cellphones .= $row["cellphone"] . "\r\n";
而不是:

    $cellphones .= $row["cellphone"] . ",\r\n"; //note the comma here
那么.csv文件中的数字将是:

9.66123E+11
9.66123E+11
123456789

那么,有什么问题吗?没有逗号,如何才能正确显示数字?

说明

逗号被视为每行值的一部分,因此MS Excel在导入时将数据视为字符串。。。。这意味着它将“按原样”存储在单元格中。在没有逗号的情况下,MS Excel将该值视为一个数字,使用一般格式,不显示前导零,如果数字超过定义的位数,则转换为科学格式

解决方案

为了始终将该值视为字符串,而不使用逗号,请将该值用双引号括起来

$cellphones .= '"' . $row["cellphone"] . '"' . "\r\n";

我怀疑这是Excel的问题,而不是CSV的问题。请尝试查看记事本中的文件以查看生成的内容。$cellphones.=''''''.$row[“mobile”].''''。“\r\n”@andrewsi我已经尝试过将这些数字导出到一个没有逗号的.txt文件中,效果非常好。正如我所解释的,当我试图将它们导出到.csv文件时,问题出现了。@Amr-在.txt文件和.csv文件之间有什么区别?@andrewsi是客户机想要在.csv文件中输入数字