我有以下查询
UPDATE users SET
username = CASE userid WHEN '1' THEN 'user1' WHEN '2' THEN 'user2' END,
email = CASE userid WHEN '2' THEN 'xyz@abc.com' WHEN '2' THEN 'pqr@xyz.com' END
WHERE userid IN ('1','2');
如果我有大量userid
?
此查询的预准备语句如何? (除了用户名和电子邮件之外还有更多字段,因此它应该是通用的)
会不会像
$stmt->prepare('UPDATE users SET username = ?, email = ? WHERE userid = ?');
并在循环中为数组中的所有值绑定并执行该语句?
我的查询是使用循环运行值
的循环生成的
答案 0 :(得分:0)
是。肯定会使你的代码更加清晰,并且还可以使SQL服务器免于解析这么大的查询。
$sql = "UPDATE users SET username = ?, email = ? WHERE userid = ?";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("sss", $username, $email, $userid);
foreach ($whatever as $row)
{
$username = $row['username'];
$email = $row['email'];
$userid = $row['userid'];
$stmt->execute();
}