我想知道PDO准备好的语句是否可以让我免于SQL注入?
实施例: $ DBH =新PDO(“mysql:host = $ host; dbname = $ dbname”,$ user,$ pass);
$ data = array('name'=> $ userInput_1,'addr'=> $ userInput_2,'city'=> $ userinput_3);
$ STH = $ DBH->(“INSERT INTO folks(name,addr,city)value(:name,:addr,:city)”);
$ STH->执行($数据);
谢谢!
答案 0 :(得分:0)
所有输入都将被正确转义&引。因此,使用PDO prepare / execute应该可以防止SQL注入。
从php手册:
为语句调用PDO :: prepare()和PDOStatement :: execute() 将使用不同的参数值多次发出 通过允许驱动程序优化应用程序的性能 协商客户端和/或服务器端缓存查询计划和 元信息,并有助于防止SQL注入攻击 无需手动引用参数。