Ребята, помогите мне исправить код, приведенный ниже. Я хотел бы получить некоторые поля базы данных MYSQL для создания файла EXCEL и PDF. В заголовочной части мне нужно добавить два других столбца COMMENT и EXAM, а также заполнить COMMENT и CLASS, когда файл будет сгенерирован с помощью оператора условия.
ЗАМЕТКИ:
if($score < 35){ $comment = fail; }else{ $comment = pass; }
Проблемы с кодом
КОД
$sql = mysqli_query($con, "SELECT firstname, lastname, student_id, score, sex
FROM students AS student
INNER JOIN scores AS score ON student.student_id = score.candidateid
WHERE score.subjectid = '200'
");
$columns_total = mysqli_num_fields($sql);
// Get The Field Name
for ($i = 0; $i < $columns_total; $i++) {
$heading = strtoupper(mysqli_field_name($sql, $i));
$output .= '"'.$heading.'",';
}
$output .="\n";
// Get Records from the table
while ($row = mysqli_fetch_array($sql)) {
for ($i = 0; $i < $columns_total; $i++) {
$output .='"'.$row["$i"].'",';
}
$output .="\n";
}
// Download the file
$filename = uniqid(time()).".csv";
header('Content-type: application/csv');
header('Content-Disposition: attachment; filename='.$filename);
echo $output;
exit;
Спасибо за ваше время
Просто чтобы сделать это правильным ответом для дальнейшего использования и ответить на оба ваших вопроса в комментариях.
Ответ на доступ к аналогичной функции для mysqli
для mysql_field_name () вы читаете mysql_field_name для нового mysqli
Чтобы добавить еще один столбец, скажем, если вы прошли в соответствии с вашим примером, так как результатом является построение в строках, вы добавляете проверку после for
цикл:
for ($i = 0; $i < $columns_total; $i++) {
$heading = strtoupper(mysqli_field_name($sql, $i));
$output .= '"'.$heading.'",';
}
$output .= '"PASSED?",';
$output .="\n";
и так же внутри while()
цикл и после for()
цикл:
while ($row = mysqli_fetch_array($sql)) {
for ($i = 0; $i < $columns_total; $i++) {
$output .='"'.$row["$i"].'",';
}
// add a pass column
if($score < 35){
$comment = "fail";
}else{
$comment = "pass";
}
$output .= '"'.$comment.'"';
$output .="\n";
}
Не проверял код, но это должно быть работающей реализацией вашего вопроса и комментариев
Других решений пока нет …