gpt4 book ai didi

php - 用条件更新查询?

转载 作者:可可西里 更新时间:2023-11-01 07:31:48 26 4
gpt4 key购买 nike

我不确定这是否可行。如果没有,请告诉我。

我有一个更新 3 个字段的 PDO mysql。

$update = $mypdo->prepare("UPDATE tablename SET field1=:field1, 
field2=:field2,
field3=:field3
WHERE key=:key");

但我希望 field3 仅在 $update3 = true; 时更新(意味着 field3 的更新由条件控制声明)

这可以通过单个查询完成吗?

我可以用 2 个查询来完成,我更新 field1field2 然后检查 bool 值并在单独的查询中根据需要更新 field3 .

//run this query to update only fields 1 and 2
$update_part1 = $mypdo->prepare("UPDATE tablename SET field1=:field1,
field2=:field2
WHERE key=:key");

//if field3 should be update, run a separate query to update it separately
if ($update3){
$update_part2 = $mypdo->prepare("UPDATE tablename SET field3=:field3
WHERE key=:key");
}

但希望有一种方法可以在一个查询中完成这个吗?

最佳答案

您不需要进行多次查询。您为什么不根据该条件构建查询字符串,然后将其传递给您的数据库适配器以执行?它可能如下所示:

    $pdo = new PDO($dsn, $user, $password);

$sql = "UPDATE table SET columnname1=:field1, columname2=:field2";

if ( $update ) $sql .= ",columname3=:field3";

$sql .= " WHERE key=:key";

$stmt = $pdo->prepare($sql);
$stmt->bindParam(":key", $key, PDO::PARAM_INT);
$stmt->bindParam(":field1", $field1, PDO::PARAM_STR);
$stmt->bindParam(":field2", $field2, PDO::PARAM_STR);

if($update) $stmt->bindParam(":field3", $field3, PDO::PARAM_STR);

$stmt->execute();

关于php - 用条件更新查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2726577/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com