我在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选项?那是为什么?
谢谢!
答案 0 :(得分:2)
虽然您可以在没有绑定的情况下完全安全地查询(通过手动格式化所有变量),但使用预准备语句在查询中表示您的数据确实是唯一正确的方法。
使用准备好的陈述的重要性经常被误判,因此,我想澄清真正的好处:
答案 1 :(得分:0)
由于您拥有用户定义的值,因此可以由用户轻松操作,以破坏查询结构并执行不需要的命令。
如果数据仅由服务器操纵,则没有必要。但由于它使用来自超级全局的数据,用户可以操作(cookie,会话,发布,获取,请求......),这是必须的。
答案 2 :(得分:0)
因为它更安全。
如果使用用户数据填充了三个变量,则无需清理输入。 此外,如果您需要多次重复该查询,则整体执行应该更快。
我个人认为,在几个月后你需要再次阅读你的查询时,阅读和调试会更容易......