PHP / MYSQL:仅在非空逗号时更新字段

时间:2015-11-07 12:40:39

标签: php mysql

我一直在寻找一种优雅,高效的方式来更新字段,只有它们有值但没找到。所以我决定咬紧牙关并使用if / then语句构建一个查询。在执行此操作之后,我在SQL语句中出现了与额外逗号有关的错误,现在我认为可能需要在字段之后有条件地插入逗号,这会增加另一个复杂程度

我是否更正你在WHERE语句之前没有逗号。

另外,实际上,在更新表之前没有优雅的方法来检查空字段吗?

   $sql = "UPDATE items SET ";
    if ($name<>'') {
    $sql.="name = '$name', ";
    }
    if ($color<>'') {
    $sql.="color='$color', ";
    }
    if ($quantity<>'') {
    $sql .="quantity='$quantity', ";
    }
    if ($size<>'') {
    $sql.="size='$size', ";
    }
    if ($pic <> '') {
    $sql.="pic = '$pic'";
    }
    $sql.= "WHERE id = $itemid && custid=$custid";

    /*offending comma after 'large' ->  'size= 'large', WHERE itemid=2231 && custid = 221
    */

感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

如果条件的$pic失败,那么您会在最后一个位置获得逗号,因此您需要在rtrim()

之前使用condition
$sql = "UPDATE items SET ";
    if ($name<>'') {
    $sql.="name = '$name', ";
    }
    if ($color<>'') {
    $sql.="color='$color', ";
    }
    if ($quantity<>'') {
    $sql .="quantity='$quantity', ";
    }
    if ($size<>'') {
    $sql.="size='$size', ";
    }
    if ($pic <> '') {
    $sql.="pic = '$pic'";
    }

 $sql=rtrim($sql, ", ");// it will remove last comma and space
 $sql.= " WHERE id = $itemid && custid=$custid";// add space before where