为了账号安全,请及时绑定邮箱和手机立即绑定

如何在多用户网站中使用预准备语句?

如何在多用户网站中使用预准备语句?

PHP
MM们 2022-08-05 15:26:30
在(代码中)将预准备语句的元素放置在许多用户与数据库交互的网站上的位置?我正在将我的代码从使用转换为使用预准备语句,因为人们说这是防止sql注入的更好方法。$mysqli->escape_string它只是简单地删除所有s并替换我的代码的其他部分,如下所示:$mysqli->escape_string$mysqli->query("update `users` set `email`='$newEmail' where `userid`={$_SESSION['userid']} limit 1");替换为:$stmt = $mysqli->prepare("update `users` set `email`=? where `userid`=? limit 1");$stmt->bind_param('si',$newEmail,$_SESSION['userid']);$stmt->execute();$stmt->close();?人们说预准备的语句更有效,因为语句模板只准备一次,然后可以使用不同的参数重新使用。但是在上面的代码替换中,每次任何用户想要更新其电子邮件地址时,都不会进行模板准备吗?我应该在服务器启动时准备所有语句吗?不要再让他们做好准备了吗?(虽然我不知道该怎么做。应该在我网站的代码中将 放置在哪里?preparebind_paramclose
查看完整描述

1 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

它只是简单地删除所有$mysqli>escape_strings,并用占位符替换变量

是的。

人们说预准备的语句更有效,因为语句模板只准备一次,然后可以使用不同的参数重新使用。

忘掉它吧。无法在请求之间重用预准备语句。

它仅在语句变量中工作,因此仅适用于单个 PHP 实例。意味着您只能将其用于重复插入/更新。即使在那里,增益也不是显着的。

这更像是一种营销技巧,而不是一个真正有用的功能。


查看完整回答
反对 回复 2022-08-05
  • 1 回答
  • 0 关注
  • 71 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信