我正在使用 PHP 7 尝试从存储在表中的数据中获取 CSV 文件,哪些字段是"ID"、"名称"、"代码"、"类别"、"价格"、"stock_count">
事情很好,但收到警告,例如
警告:mysqli_fetch_field_direct((:字段偏移量对于第 8 行 C:\xampp\htdocs\php_csv_file_export\php_csv_export_method1.php 第8 行的结果集无效
警告:mysqli_fetch_field_direct((:字段偏移量对于第 8 行 C:\xampp\htdocs\php_csv_file_export\php_csv_export_method1.php 第8 行的结果集无效
代码如下
<?php
$con= mysqli_connect("localhost", "root", "", "phpp");
$result=mysqli_query($con,"select * from top");
$num_column=mysqli_num_rows($result);
$csv_header = '';
for($i=0;$i<$num_column;$i++)
{
if(isset(mysqli_fetch_field_direct($result,$i)->name))
{
$csv_header .= '"' . mysqli_fetch_field_direct($result,$i)->name . '",';
}
}
$csv_header .= "n";
$csv_row ='';
while($row = mysqli_fetch_row($result))
{
for($i=0;$i<$num_column;$i++)
{
if(isset($row[$i]))
{
$csv_row .= '"' . $row[$i] . '",';
}
}
$csv_row .= "n";
}
/* Download as CSV File */
header('Content-type: application/csv');
header('Content-Disposition: attachment; filename=toy_csv.csv');
echo $csv_header . $csv_row;
exit;
?>
可能是因为你正在循环 ROWS 而不是你的列
$num_column=mysqli_num_rows($result); // rows != Columns
我认为您正在寻找 http://php.net/manual/en/mysqli-result.fetch-fields.php,您可以执行以下操作:
foreach(mysqli_fetch_fields($result) as $field){
$csv_header .= '"' . $field->name . '",';
unset($field);
}
如果您使用的是语句,则可以执行以下操作:
$meta = mysqli_stmt_result_metadata($stmt);
foreach ( mysqli_fetch_field($meta) as $field ) {
$csv_header .= '"' . $field->name . '",';
unset($field);
}