【发布时间】:2020-01-08 06:45:22
【问题描述】:
想知道我的 SQL 更新案例为何无法正常运行。 我已经有了价值观:
$usrcustomerid = 110;
$search = 'face';
在 SET 中寻找对我的 CASE 的修复,因为此 SQL 触发时没有更新
SQL 更新代码
public function UpdateUserSearch($db, $usrcustomerid, $search) {
$stmt = $db->prepare(
" UPDATE usr_customer
SET search_counter = (CASE WHEN search_counter = 1 THEN 2
WHEN search_counter = 2 THEN 3
WHEN search_counter = 3 THEN 1 END),
search1 = (CASE WHEN search_counter = 1 THEN $search END),
search2 = (CASE WHEN search_counter = 2 THEN $search END),
search3 = (CASE WHEN search_counter = 3 THEN $search END)
WHERE usrcustomerid = $usrcustomerid "
);
$stmt->bindValue(':usrcustomerid', $usrcustomerid, PDO::PARAM_INT);
$stmt->bindValue(':search', $search, PDO::PARAM_STR);
$stmt->execute();
$rowAffected = $stmt->rowCount();
return $rowAffected;
}
表 usr_customer
在下图中,用户的 search_counter 设置为 1,三个搜索列里面没有值,所以代码,根据我在 CASE 中的逻辑,应该在“search1”中插入我的“$search”值并将 search_counter 从 1 更新为 2。
PS 我知道 SQL 注入,请不要用提醒来回答,因为我试图让我的代码首先工作。
【问题讨论】:
标签: php mysql sql sql-update case