如何根据是否占用以前的字段来更新记录


How to update a record based on if previous fields are occupied?

我的语法没有在我的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++;  
    }
}
你不能

在字符串中使用计数器变量,你需要连接它

$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 等。

Shenir,如果你想更新任何记录,你应该尝试使用UPDATE而不是INSERT。

我建议你应该阅读这篇文章 http://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html