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数据. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |