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

时间:2013-10-31 13:02:36

标签: php mysql

我的语法没有错误,我的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++;  
    }
}

2 个答案:

答案 0 :(得分:0)

Shenir,如果你想更新任何记录,你应该尝试使用UPDATE而不是INSERT。如果你想要INSERT&amp;使用相同的查询进行更新,而不是使用重复记录的密钥。

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

答案 1 :(得分: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等的列,这些列不存在。