加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP和mySQLi:使用prepare语句时是否还需要检查用户输入?

发布时间:2020-12-13 22:03:06 所属栏目:PHP教程 来源:网络整理
导读:如果我在mySQLi中使用prepare语句,我是否仍然需要以任何方式转义或检查用户输入.例如,如果我有代码: $members = new mysqli("localhost","user","pass","members");$r_email = $_POST['r_email'];$check = $members-prepare("select user_id from users whe
如果我在mySQLi中使用prepare语句,我是否仍然需要以任何方式转义或检查用户输入.例如,如果我有代码:

$members = new mysqli("localhost","user","pass","members");
$r_email = $_POST['r_email'];
$check = $members->prepare("select user_id from users where email = ?");
$check->bind_param('s',$r_email);
$check->execute();
$check->store_result();
if ($check->num_rows > 0) {
    echo "user already registered";
    $check->close();
}
$members->close();

我是否需要将$r_email = $_POST [‘r_email’]更改为$r_email = mysql_real_escape_string($_ POST [‘r_email’]);

谢谢.

解决方法

如果您要作为参数传递,则无需转义值.实际上,您不应该,因为您将在文档中插入文字反斜杠.

这些必须是准备时SQL查询的一部分,因此RDBMS可以解析和验证它们.或在表单上验证用户输入.

总是SQL-Escape数据放在SQL语句中.永远不要在SQL语句之外的SQL-Escape数据.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读