您好我想用JOIN将其绑定到一个查询。 这是如何工作的:
Db::bind("uid", strip_tags($userid));
DB::bind("user_id", strip_tags($refer));
Db::bind("points_earn", strip_tags($points_earn));
Db::bind("points_refer", strip_tags($points_refer));
Db::query("UPDATE referrals SET `points_earn` = :points_earn WHERE new_id = :uid");
Db::query("UPDATE users SET `points` = `points` + :points_refer WHERE id = :user_id");
我的想法,但不是工作。
Db::query("UPDATE referrals r JOIN users u ON r.user_id = u.id SET `r.points_earn` = :points_earn WHERE r.new_id = :uid AND `u.points` = `u.points` + :points_refer WHERE u.id = :user_id");
有人有解决方案吗?
答案 0 :(得分:1)
您的语法是正确的,但后面的标记是错误的,每个SELECT
只有一个WHERE
:
UPDATE referrals r JOIN
users u
ON r.user_id = u.id
SET r.points_earn = :points_earn
WHERE r.new_id = :uid AND u.points = u.points + :points_refer AND
u.id = :user_id;
反引号的问题在于以下内容完全不同:
`r.points_earn`
`r`.`points_earn`
第一个引用名为" r.points_earn"的列。第二个是指" points_earn"列" r"。反叛是不必要的,所以你可以删除它们。