PHP - 应该使用准备好的语句吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (15)

我有以下查询

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

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

我的查询是使用循环运行一组值来生成的

提问于
用户回答回答于

它会让你的代码更清晰,并且会让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();
}

扫码关注云+社区

领取腾讯云代金券