伙计们帮我纠正我的代码,我想获取一些MYSQL DB字段来生成EXCEL和PDF文件。在标题部分,我需要添加另外两列COMMENT和EXAM,并能够在使用条件语句生成文件时填充COMMENT和CLASS。
注意:
- 提供的代码可以使用mysql而不是mysqli生成EXCEL文件
- 分数($score)应为%,例如20%
- $comment条件示例
if($score < 35){ $comment = fail; }else{ $comment = pass; }
代码问题
- 不能用mysqli_field_name而是用mysql_field_name(你能解释一下吗)
代码
$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;
感谢您抽出时间
只是为了让它成为一个合适的答案,供将来参考,并在评论中回答您的两个问题。
为mysql_field_name()访问mysqli
的类似函数的答案是将mysql_fielt_name读取到新的mysqli
要添加另一列,假设您按照示例通过,因为结果是在行中构建的,那么您可以在for
循环后附加一个检查:
for ($i = 0; $i < $columns_total; $i++) {
$heading = strtoupper(mysqli_field_name($sql, $i));
$output .= '"'.$heading.'",';
}
$output .= '"PASSED?",';
$output .="'n";
并且类似地在CCD_ 3循环内部和在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";
}
尚未测试代码,但这应该是您的问题和评论