-8

我的语法是否有问题,它没有在我的 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++;  
    }
}
4

2 回答 2

0

谢尼尔,如果你想更新任何记录,那么你应该尝试使用 UPDATE 而不是 INSERT。如果您希望 INSERT & UPDATE 使用相同的查询而不是使用重复记录的键。

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

于 2013-10-31T13:16:57.390 回答
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 等。

于 2013-10-31T13:51:33.017 回答