PDO防止sql注入的原理
首先,PDO可以被认作是一种通过编译SQL语句模板来运行sql语句的机制。 预处理语句可以带来两大好处: 1.查询只需要被解析(或编译)一次,但可以执行多次通过相同或不同的参数。当查询处理好后,数据库将分析,编译和优化它的计划来执行查询。对于复杂的查询这个过程可能需要足够的时间,这将显著地使得应用程序变慢,如果有必要,可以多次使用不同的参数 重复相同的查询。通过使用处理好的语句的应用程序避免重复 【分析/编译/优化】 周期。这意味着,预处理语句使用更少的资源,而且运行得更快。 2.绑定的参数不需要使用引号;该驱动程序会自动处理。如果应用程序使用预处理语句,开发人员可以确保不会发生 SQL注入 (但是,如果查询的其他部分使用了未转义的输入, SQL注入 仍然是可能的)。 预处理语句非常有用,PDO可以使用一种本地模拟的办法来为没有预处理功能的数据库系统提供这个功能。这保证了一个应用可以使用统一的访问方式来访问数据库。 使用PDO可以带来两个很好的效果,预编译带来查询速度的提升,变量的绑定可以预防 sql injection,其实PDO的预防 sql注入 的机制也是类似于使用 mysql_real_escape_string 进行转义。 PDO 有两种转义的机制: (1)第一种是本地转义,这种转义的方式是使用单字节字符集(PHP < 5.3.6)来转义的(