我有一个产品表,其中包含ID,名称,描述,颜色,价格,数量和状态
如何通过使用准备好的语句连续更新名称,描述或仅更新2-3个字段。例如,我准备好的语句是
UPDATE product SET product_name = ?, product_desc = ?,product_size = ?, product_color = ?,product_price = ?,product_quantity = ?, product_status = ? WHERE id = $id
[bind_param
看起来像这样
bind_param("ssssiii", $data['name'], $data['desc'], $data['size'], $data['color'], $data['price'], $data['quantity'], $data['status'])
并且假设$data['color']
和$data['quantity']
为空,那么我如何更新数据库中的该行以保留product_color
和product_quantity
列的旧值。
执行更新语句时它是否自动保留旧数据,或者我必须对类似内容进行一些验证?
这是我的代码:
$connect = new mysqli(HOST,USER,PASSWORD,DATABASE);;
$sql = "UPDATE product SET product_name = ?, product_desc = ?,product_size = ?,
product_color = ?,product_price = ?,product_quantity = ?, product_status = ?
WHERE id = $id";
$stmt = $connect->prepare($sql);
$stmt->bind_param("ssssiii", $data['name'], $data['desc'], $data['size'], $data['color'],
$data['price'],$data['quantity'],$data['status']);
$stmt->execute();
$stmt->close();
如果我理解正确,则可以使用coalesce()
:
UPDATE $tableName
SET product_name = COALESCE(?, product_name),
product_desc = COALESCE(?, product_desc),
product_size = COALESCE(?, product_size),
product_color = COALESCE(?, product_color),
product_quantity = COALESCE(?, product_quantity),
product_status = COALESCE(?, product_status)
WHERE id = ?;
注意:
NULL
。NULL
。WHERE
,因此它引用了一个参数。