我一直在寻找一种优雅,高效的方式来更新字段,只有它们有值但没找到。所以我决定咬紧牙关并使用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
*/
感谢您的任何建议。
答案 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