Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP创建CSV文件_Php_Mysql_Csv - Fatal编程技术网

使用PHP创建CSV文件

使用PHP创建CSV文件,php,mysql,csv,Php,Mysql,Csv,我正在通过php创建一个csv文件,并从数据库中获取一些值 我成功地获得了一个值,并且出色地生成了csv 我有一个像0012345和0051234这样的值 我这里的问题是,当我查看csv文件中的数据时,00不仅显示12345和51234 当我检查excel并设置单元格格式时,它似乎被设置为常规模式。应将其设置为文本,以便接受00作为数字的第一位数字 这是我的代码: $csv_filename="ePay.csv"; header("Cache-Control: maxage=1"); heade

我正在通过php创建一个csv文件,并从数据库中获取一些值

我成功地获得了一个值,并且出色地生成了csv

我有一个像0012345和0051234这样的值

我这里的问题是,当我查看csv文件中的数据时,00不仅显示12345和51234

当我检查excel并设置单元格格式时,它似乎被设置为常规模式。应将其设置为文本,以便接受00作为数字的第一位数字

这是我的代码:

$csv_filename="ePay.csv";
header("Cache-Control: maxage=1");
header("Pragma: public");

header("Content-Type: application/vnd.ms-excel");
header("Expires: 0");

header("Cache-Control: must-revalidate, post-check=0, pre-check=0");


header("content-disposition: attachment;filename=$csv_filename");
include("/includes/config.php");

$sql = "SELECT * FROM moneyroute where sender_country ='Nigeria' and status = 'new'";

#echo $sql;
$olu="AfrotradeGroup";
$result=mysql_query($sql);
if(mysql_num_rows($result)>0){

        $fileContent="Beneficiary Name,Beneficiary Account No,Beneficiary Bank Code,Transaction Amount,Narration\n";
        while($data=mysql_fetch_array($result))
        {
$name_=$data['sender_first_name']." ".$data['sender_last_name'];
            if($data['status']=='u')
                $sta='Approved';
                else
                $sta='Pending';
        $fileContent.= "".$data['receiver_first_name']." ".$data['receiver_last_name'].",".$data['accountno'].",".$data['sortcode'].",".$data['equal_currency'].",".$olu."\n";
    }


$fileContent=str_replace("\n\n","\n",$fileContent);
        echo $fileContent;
    }
我得到的结果如下: Ade you 67654578 97865 30151.52非洲贸易集团\ 67654578应为067654578,97865应为097865

这个问题的解决办法是什么?
提前感谢,祝您度过愉快的一天。

问题似乎在于您必须使用铸造操作员

$myText = (string)$myVar;

通过这种方式,变量被用作文本而不是数字。

听起来您的csv创建正确。如果您仅在Excel内部使用此选项,一种方法可能是在您的号码前添加`0012345,而不仅仅是0012345。如果我正确地记住了我的Excel,那么`会告诉它接受作为文本的值。不确定它是否能在CSV中工作,但值得一试。如果“不起作用,请尝试在数字前输出一个引号:如果不起作用,您可以以纯文本形式打开.CSV文件,并确保这在Excel端肯定是一个问题。@arunkumar:我试着在值之前加上“,”(撇号)也会在CSV中打印出来。我想要一些不会在csv中打印的内容。@Hans Engel:撇号也会在csv中打印。