php – 如何将参数绑定到未准备的查询?
我正在制作一个小型的Web应用程序,它将定期接收用户输入的数据.在研究如何确保数据输入首先被清理时,为此它似乎是准备好的语句是要走的路.
我发现this SO question然而,因为我的应用程序(至少据我所知)每页请求不会执行多个查询,看起来我真正需要的是将值绑定到查询中的参数. 我一直在浏览PDO和mysqli上的PHP手册,但我找不到任何值与普通查询绑定的示例.我发现的所有示例都有一个$stmt->在绑定之前的某处准备. 是否该语句是“准备”的东西是由数据库的支持决定的,而准备语句将始终在代码中?或者有没有办法将参数直接绑定到$dbh->查询(…)? 为了解释为什么我要查看它是否可能不使用prepare,是由于我之前在帖子中链接的SO问题的声明:
还有这个
你没有.在那些问号可被视为参数值的插入点之前,需要首先解析(即准备好)具有参数(即特定位置的问号)的SQL字符串. 因此,在调用bind()之前,总是需要调用prepare(). 参数化语句是一个包含SQL和占位符标记的字符串(例如问号,但不同的数据库使用不同的占位符): $sql = "SELECT user_id FROM user WHERE user_name = ?" 现在假设您要在此位置插入一个值: $_POST["username"] 从广义上讲,准备一份陈述会给问题带来特殊的意义,“这里可以插入一个价值”.换句话说,它从占位符创建参数. $stmt->prepare($sql) 将值绑定到参数会将参数设置为特定值. $stmt->bind_param("s",$_POST["username"]) 现在可以在没有SQL字符串的情况下执行查询,并且用户提供的值实际上彼此接触.这是重要的一点:SQL和参数值分别发送到服务器.他们从不相互接触. $stmt->execute(); 优点是: >您可以将新值绑定到参数并再次执行查询,而无需重复所有操作(在循环中很有用).>无论$_POST [“username”]包含什么值,SQL注入都是不可能的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |