PHP - 是否应该使用预先准备好的声明?

时间:2016-11-07 07:09:55

标签: php sql mysqli prepared-statement

我有以下查询

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 = ?'); 

并在循环中为数组中的所有值绑定并执行该语句?

  

我的查询是使用循环运行值

的循环生成的

1 个答案:

答案 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();
}