以下のコードは、mysqlテーブルからデータを正しくエクスポートしますが、出力されたcsvファイルに列名が表示されません。エクスポートPHP CSVファイルの列が表示されない
if(isset($_POST["export"])){
$branchcode=$_POST['branchcode'];
$start=$_POST['start'];
$end=$_POST['end'];
$sql=mysqli_query($conn,"select tk_file,tk_date,userid,tk_from,tk_to from rfc_timekeeping_history where branchcode='$branchcode' and (tk_date between '$start' and '$end');")or die(mysqli_error());
$output = "";
$columns_total = mysqli_num_fields($sql);
for ($i = 0; $i < $columns_total; $i++) {
$heading = mysqli_fetch_fields($sql, $i);
$output .= '"'.$heading.'",';
}
$output .="\n";
while ($row = mysqli_fetch_array($sql)) {
for ($i = 0; $i < $columns_total; $i++) {
$output .='"'.$row["$i"].'",';
}
$output .="\n";
}
$filename = "myFile.csv";
header('Content-type: application/csv');
header('Content-Disposition: attachment; filename='.$filename);
echo $output;
exit;
}
あなたのクエリはSQLインジェクション攻撃に対して広く公開されています。準備されたステートメントとバウンドパラメーターを使用してください。ここにPDOのページがありますが、mysqliでも準備できます:https://secure.php.net/manual/en/pdo.prepare.php – jedifans