2012-07-18 28 views
-1

我有我的文件這段代碼及其不同的文件,但在這個新的文件,做同樣的事與工作的一個運作良好,這是行不通的將php記錄導出到csv的php代碼有什麼不對?

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); 

,我也得到這些錯誤

警告:(c)中提供的foreach參數無效:\ XAMPP \ htdocs中\ pitss \上線出口\ bankexport.php 32

警告:mysql_data_seek()[function.mysql數據-seek]:對於MySQL結果索引18,偏移量0是無效的(或者查詢數據是非緩衝的ered)在C:\ xampp \ htdocs \ pitss \ export \ bankexport.php上線40

我在做什麼錯?

+8

[PHP的內置功能CSV(HTTP:/ /php.net/manual/en/function.fputcsv.php) – 2012-07-18 15:00:41

+0

mysql_fetch_assoc($ result)之後的行是什麼? $ result是否實際包含任何值?你也應該使用CSV功能。 。 。我猜測$結果是空的,因爲這也可以解釋爲什麼mysql_data_seek()失敗了。 – ernie 2012-07-18 15:04:11

+3

**請告訴我你不會爲一家銀行工作!** – Neal 2012-07-18 15:10:06

回答

0

如果您的$ row變量不是數組,則會引發此錯誤。

所以查詢本身可能會引發錯誤。

嘗試使用mysql_error()檢查mysql錯誤,並在其他地方執行適當的錯誤處理。

0

你不檢查,如果$result是資源或只是FALSE
你不檢查你在$row得到了一個陣列,可以FALSE

你可以使用mysql_error(),看看在過去數據庫錯誤

1

1日的事情是第一次:
確保查詢不有錯誤,你可以在你的情況下使用mysql_error()


第二件事:
Use prepared queries,你現在有可能導致bobby-table一個......你在做什麼錯了沒有使用