我正在使用php 7
,尝试从表中存储的数据中获取csv文件
“id”,“name”,“code”,“category”,“price”,“stock_count”
事情很好,但收到警告
<b>Warning</b>: mysqli_fetch_field_direct(): Field offset is invalid for resultset in <b>C:\xampp\htdocs\php_csv_file_export\php_csv_export_method1.php</b> on line <b>8</b><br />
<b>Warning</b>: mysqli_fetch_field_direct(): Field offset is invalid for resultset in <b>C:\xampp\htdocs\php_csv_file_export\php_csv_export_method1.php</b> on line <b>8</b><br />
代码低于
<?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;
?>
答案 0 :(得分:1)
可能是因为你正在循环ROWS而不是你的colums
$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);
}