使用 php 在导出的 csv 文件格式中出现错误
Getting error in exported csv file format using php
我使用以下代码从我的页面以 csv 格式保存数据。保存后,我的 csv 文件中有一些额外的行。我将如何删除它我需要参考这个。
$connection=mysql_connect($host, $uname, $pass);
echo mysql_error();
//or die("Database Connection Failed");
$selectdb=mysql_select_db($database) or
die("Database could not be selected");
$result=mysql_select_db($database)
or die("database cannot be selected <br>");
// Fetch Record from Database
$output = "";
$table = "tbl_record"; // Enter Your Table Name
$sql = mysql_query("select * from $table");
$columns_total = mysql_num_fields($sql);
// Get The Field Name
for ($i = 0; $i < $columns_total; $i++) {
$heading = mysql_field_name($sql, $i);
$output .= '"'.$heading.'",';
}
$output .="\n";
// Get Records from the table
while ($row = mysql_fetch_array($sql)) {
for ($i = 0; $i < $columns_total; $i++) {
$output .='"'.$row["$i"].'",';
}
$output .="\n";
}
// Download the file
$filename = "myFile.csv";
header('Content-type: application/csv');
header('Content-Disposition: attachment; filename='.$filename);
echo $output;
exit;
?>
下面是输出值的截图
红色标记是不需要的线。
您正在使用 depricated 函数,如您所见,它正在生成警告。
使用error_reporting(0);
关闭所有错误报告。
我也建议不要使用 _mysql,而是使用 PDO
警告 mysql_*
已弃用,请勿使用。使用 PDO,快速修复
//Put on top
error_reporting(E_ERROR | E_PARSE);
这将抑制警告,这是一个很好的开始 read of PDO
更新
要使用 mysqli 获取 CSV 格式的字段名称,您需要更改此代码
将此更改为
// Get The Field Name
for ($i = 0; $i < $columns_total; $i++) {
$heading = mysql_field_name($sql, $i);
$output .= '"'.$heading.'",';
}
$output .="\n";
这个
while ($finfo = mysqli_fetch_field($result)) {
$heading = $finfo->name;
$output .= '"'.$heading.'",';
}
启用mysqli_*
检查您的 php.ini 是否有 extension=mysqli.so
或类似内容。可以使用 # 将其注释掉,只需取消注释即可。
启用 PDO
在 windows 服务器上,您可以在 php.ini
中添加以下行
extension=php_pdo.dll
extension=php_pdo_mysql.dll
在 Linux 服务器上,您可以使用以下选项编译 php --with-pdo-mysql 在您的 php.ini 中,添加以下行
extension=pdo.so
extension=pdo_mysql.so
我使用以下代码从我的页面以 csv 格式保存数据。保存后,我的 csv 文件中有一些额外的行。我将如何删除它我需要参考这个。
$connection=mysql_connect($host, $uname, $pass);
echo mysql_error();
//or die("Database Connection Failed");
$selectdb=mysql_select_db($database) or
die("Database could not be selected");
$result=mysql_select_db($database)
or die("database cannot be selected <br>");
// Fetch Record from Database
$output = "";
$table = "tbl_record"; // Enter Your Table Name
$sql = mysql_query("select * from $table");
$columns_total = mysql_num_fields($sql);
// Get The Field Name
for ($i = 0; $i < $columns_total; $i++) {
$heading = mysql_field_name($sql, $i);
$output .= '"'.$heading.'",';
}
$output .="\n";
// Get Records from the table
while ($row = mysql_fetch_array($sql)) {
for ($i = 0; $i < $columns_total; $i++) {
$output .='"'.$row["$i"].'",';
}
$output .="\n";
}
// Download the file
$filename = "myFile.csv";
header('Content-type: application/csv');
header('Content-Disposition: attachment; filename='.$filename);
echo $output;
exit;
?>
下面是输出值的截图
红色标记是不需要的线。
您正在使用 depricated 函数,如您所见,它正在生成警告。
使用error_reporting(0);
关闭所有错误报告。
我也建议不要使用 _mysql,而是使用 PDO
警告 mysql_*
已弃用,请勿使用。使用 PDO,快速修复
//Put on top
error_reporting(E_ERROR | E_PARSE);
这将抑制警告,这是一个很好的开始 read of PDO
更新
要使用 mysqli 获取 CSV 格式的字段名称,您需要更改此代码
将此更改为
// Get The Field Name
for ($i = 0; $i < $columns_total; $i++) {
$heading = mysql_field_name($sql, $i);
$output .= '"'.$heading.'",';
}
$output .="\n";
这个
while ($finfo = mysqli_fetch_field($result)) {
$heading = $finfo->name;
$output .= '"'.$heading.'",';
}
启用mysqli_*
检查您的 php.ini 是否有 extension=mysqli.so
或类似内容。可以使用 # 将其注释掉,只需取消注释即可。
启用 PDO
在 windows 服务器上,您可以在 php.ini
中添加以下行extension=php_pdo.dll
extension=php_pdo_mysql.dll
在 Linux 服务器上,您可以使用以下选项编译 php --with-pdo-mysql 在您的 php.ini 中,添加以下行
extension=pdo.so
extension=pdo_mysql.so