Kar*_*ler 3 php mysql mysqli prepared-statement
我有一个准备好的语句来更新几个字段。我从公式中获取数据,但并非所有字段都是必需的。所以可能有些字段没有设置。我将它们默认设置为 NULL。现在我不想用 NULL 覆盖旧值。如果值为 NULL,如何告诉 MySql 不更新该值?
$insert_stmt = $mysqli->prepare("
UPDATE members SET username=?, email=?, $password=?, $random_salt=?, level=?, customerID=?, name=?, surname=?, phone=?, quantities=? WHERE id=?
");
$insert_stmt->bind_param('ssssissss', $username, $email, $password, $random_salt, $level, $customerID, $firstname, $surname, $phone);
$insert_stmt->execute();
Run Code Online (Sandbox Code Playgroud)
在我的情况下,密码和 random_salt 值可能为 NULL。仅通过 NULL 覆盖密码将非常糟糕;)
您可以按如下方式更改查询:
UPDATE members SET
username = IFNULL(?, username),
email = IFNULL(?, email) -- and so on for all fields
WHERE...
Run Code Online (Sandbox Code Playgroud)
首先检查参数的值并动态构建查询也可能更有效,仅包括您有非空值要更新的字段。
| 归档时间: |
|
| 查看次数: |
1589 次 |
| 最近记录: |