我试图让一个脚本工作,其中选择某些选定的记录(取决于用户输入),然后导出到 CSV 文件。我已经尝试了各种方法来做到这一点;到目前为止,这是我能找到的最成功的(实际上来自我几年前做的一些代码),但它只会一遍又一遍地返回第一行,直到行用完(你可以看到我的锯末-传输方法我曾经告诉 PHP 不断获取行,直到结果用尽)。我的问题:可能有一种更简单的方法可以做到这一点——有什么想法吗?如果没有,我该怎么做才能让 MySQL 在下次运行循环时前进到下一行?我认为无论如何都应该使用 mysql_fetch_array 来做到这一点。
是的,我看过 fputcsv,但我似乎无法让任何数据通过。当我尝试使用 fputcsv 传递数组并通过 mysql_fetch_array、mysql_fetch_assoc 或 mysql_fetch_row 获取数组时,CSV 文件总是空白。
我一直在学习,这是我还没有学到一些东西以继续前进的那些时候之一。而且我知道的也不多。
我的代码,或者至少是必要的代码:
$result = mysql_query("SELECT id FROM student_history WHERE username='$username'");
$numrows = mysql_num_rows($result);
if (!$result) {
die("Query to show fields from table failed!:" .mysql_error());
}
$write = fopen("exportedmagic.csv", 'w') or die ("Can't create/open file to write! Drats!");
fwrite($write, "ID, Username, Class, Status, Date, Time\n");
while($numrows > 0) {
$query = "SELECT id, username, class, status, date, time FROM student_history WHERE username='$username'";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
$id = $row['id'];
$username = $row['username'];
$class = $row['class'];
$status = $row['status'];
$date = $row['date'];
$time = $row['time'];
fwrite($write, $id .", " .$username .", " .$class .", " .$status .", " .$date .", " .$time ."\n");
$numrows--;
}