2013-10-31 58 views
-7

我的語法沒有在我的PHP腳本中執行有問題嗎?我不更新所有記錄,我試圖更新其中invoice_no等於從另一種形式的'$ id',但只有當pp1_dt,pp1_amt,pp1_ref是空的,否則移動到pp2_dt,pp2_amt,pp2_ref等等到5。如何根據以前的字段是否被佔用來更新記錄?

$ i = 1;

while($i <= 5) { 
    $pp_sql = "UPDATE Invoices SET pp'$i'_dt = '$pp1_dt', pp'$i'_amt = '$pp1_amt', pp'$i'_ref = '$pp1_ref' where invoice_no='$id' AND (coalesce(pp'$i'_dt, pp'$i'_amt, pp'$i'_ref) is null)"; 

    if($db->exec($pp_sql)) { 
     $p_num = $i; 
    } 
    else { 
     $i++; 
    } 
} 
+0

你想更新**記錄嗎? –

+1

這不是有效的PHP,請檢查給定的錯誤消息以解決該問題。 – str

+2

不要爲每個INSERT發送一個新的查詢 – Vallentin

回答

0

你不能使用你的計數器變量的字符串中,您需要連接它

$pp_sql = "UPDATE Invoices SET pp" . $i . "_dt = '$pp1_dt', pp" . $i . "_amt = '$pp1_amt', pp" . $i . "_ref = '$pp1_ref' where invoice_no=" . $id . " AND (coalesce(pp" . $i . "_dt, pp" . $i . "_amt, pp" . $i . "_ref) is null)"; 

你現在寫的方式,它的嘗試在表格中找到名爲pp $ i的列而不是pp1,pp2等,這些列不存在。

+0

更改$ pp_sql後,查詢仍然無法執行 –

0

Shenir,如果你想更新任何記錄,你應該嘗試使用UPDATE而不是INSERT。如果您希望INSERT & UPDATE與使用鍵的重複記錄相同的查詢。

我建議你閱讀這篇文章http://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html

+0

我將我的sql更改爲「$ pp_sql =」UPDATE Invoices SET pp'$ i'_dt ='$ pp1_dt',pp'$ i'_amt ='$ pp1_amt ',pp'$ i'_ref ='$ pp1_ref'其中invoice_no ='$ id'AND(coalesce(pp'$ i'_dt,pp'$ i'_amt,pp'$ i'_ref)爲空)「; 「沒有任何運氣。 –

相關問題