我有以下查询
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 = ?');
并在循环中为数组中的所有值绑定和执行该语句?
My query是使用遍历
的值数组的循环生成的
发布于 2016-11-07 15:40:20
是。毫无疑问,这将使您的代码更加清晰,也将使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();
}
https://stackoverflow.com/questions/40459595
复制相似问题