[英]Sql queries binding variables vs specifying them
我在mySql中创建一个简单的查询,以将表单中的某些值插入到我的数据库中。
我的问题很简单,但是要参考绑定变量与在sql语句中指定变量之间的区别。
捆绑:
$query = "INSERT INTO test (name, lastName, price) VALUES (:name, :lastName, :price)";
$apply = $con -> prepare($query);
$apply -> execute (array(':name'=>$name,':lastName'=>$lastName,':price=>$price'));
典型:
$query = "INSERT INTO test (name, lastName, price) VALUES ($name, $lastName, $price)";
Execute the query....
即使对于上述简单情况,是否真的建议使用Binding选项? 这是为什么?
谢谢!
尽管您可以使查询完全安全而无需绑定(通过手动格式化所有变量),但是使用准备好的语句在查询中表示数据确实是唯一正确的方法。
使用准备好的语句的重要性常常被错误地判断,因此,我想澄清一下真正的好处:
这是必要的,因为您具有用户定义的值,并且用户可以轻松操纵它们,以破坏查询结构并执行不需要的命令。
如果仅由服务器处理数据,则没有必要。 但是,由于它使用来自超级全局变量的数据,用户可以操纵这些数据(cookie,会话,发布,获取,请求...),因此这是必须的。
因为它更安全。
如果使用用户数据填充了三个变量,则无需清理输入。 另外,如果需要多次重复该查询,则总体执行速度应该更快。
我个人认为,几个月后不得不再次读取查询时,它更易于阅读和调试...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.