这个将mysql记录导出到csv的php代码有什么问题


Whats wrong with this php code that exports mysql records to csv?

我的文件中有这段代码,它在不同的文件中都能很好地工作,但在这个与工作文件做相同事情的新文件中,它不工作

mysql_select_db($db);
$result = mysql_query("
SELECT 
    CONCAT(`employees`.`first_name`,
            ' ',
            `employees`.`middle_name`,
            ' ',
            `employees`.`last_name`) AS `fullname`,
    `banks`.`bank_code`,
    `bank_branch_code`.`branch_code`,
    `employees`.`account_number`,
    `pay_roll_history`.`payable`,
    `employees`.`email`,
    `banks`.`payment_type`,
    `banks`.`process_mode`
FROM
    `employees`,
    `banks`,
    `bank_branch_code`,
    `pay_roll_history`
WHERE
    `employees`.`bank_id` = `banks`.`bank_id` 
    AND `employees`.`employee_id` = `pay_roll_history`.`employee_id` 
    AND `banks`.`bank_id` = `bank_branch_code`.`bank_id` 
    AND `pay_roll_history`.`payroll_date` = '$this_date'
");
//Open a csv file
$fp = fopen('c:'users'oteheddy'Desktop'test'BankReport.csv', 'w');

//*************************************
// fetch a row and write the column names out to the file
$row = mysql_fetch_assoc($result);
$line = "";
$comma = "";
foreach($row as $name => $value) {
    $line .= $comma . '"' . str_replace('"', '""', $name) . '"';
    $comma = ",";
}
$line .= "'n";
fputs($fp, $line);
// remove the result pointer back to the start
mysql_data_seek($result, 0);

我得到这些错误

警告:在第32行上为C:''examplep''htdocs''pitss''export''bankexport.php中的foreach()提供的参数无效

警告:mysql_data_seek()[function.mysql data seek]:偏移量0对于第40行上C:''examplep''htdocs''pitss''export''bankexport.php中的mysql结果索引18无效(或查询数据未缓冲)

我做错了什么?

第一件事就是第一件事:
请确保查询不存在错误,您可以在您的情况下使用mysql_error()


第二件事:
使用准备好的查询,您现在拥有的查询可以导致一个浮动表。。。

如果$row变量不是数组,则会引发此错误。

因此,查询本身可能会引发错误。

尝试使用mysql_error()检查mysql错误,并在其他地方进行正确的错误处理。

您不检查$result是资源还是仅是FALSE
你没有检查你在$row中是否有一个数组,可能是FALSE

您可以使用mysql_error()查看最后一个数据库错误