我正在 mySql 中创建一个简单的查询,以将表单中的一些值插入到我的数据库中。
我的问题很简单,但涉及绑定变量与将它们指定到 sql 语句中之间的区别。
Binding:
$query = "INSERT INTO test (name, lastName, price) VALUES (:name, :lastName, :price)";
$apply = $con -> prepare($query);
$apply -> execute (array(':name'=>$name,':lastName'=>$lastName,':price=>$price'));
Typical:
$query = "INSERT INTO test (name, lastName, price) VALUES ($name, $lastName, $price)";
Execute the query....
即使对于上述简单情况,是否真的建议使用“绑定”选项?这是为什么?
Thanks!
尽管您可以在不绑定的情况下使查询完全安全(通过手动格式化所有变量),但使用准备好的语句来表示查询中的数据确实是唯一正确的方法。
使用准备好的语句的重要性经常被误判,因此,我想澄清一下真正的好处:
- 准备好的语句进行正确的格式化(或处理)不可避免的.
- prepared statement does proper formatting (or handling) in the only proper place - right before query execution, not somewhere else, so, our safety won't rely on such unreliable sources like
- PHP 的一些“神奇”功能宁可破坏数据,也不保证数据安全。
- 一个(或几个)程序员的良好意愿,他们可以决定在程序流中的某个位置格式化(或不格式化)我们的变量。这是非常重要的一点。
- 准备好的语句会影响进入查询的值,但不会影响源变量,源变量保持不变并可以在进一步的代码中使用(通过电子邮件发送或在屏幕上显示)。
- 准备好的语句可以使应用程序代码大大缩短,在幕后完成所有格式化(*仅当驱动程序允许时)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)