在 Oracle 和 PHP 中绑定变量
作者:Larry Ullman通过绑定变量提高 Oracle 驱动的 PHP 应用程序的速度和安全性。本文相关下载:
Oracle JDeveloper PHP Extension
想必您一定知道,当前的大多数网站都依赖数据库,只是方式各有不同。 无论您正在构建的站点需要论坛、电子商务组件、包含大量文章和信息还是仅仅从访问者那里获得反馈,您都很可能会通过某种方式并入数据库。 尽管数据库很重要并通常是不可或缺的,但使用它们会影响(通常是不利影响) Web 应用程序的两个方面: 性能和安全性。 了解何时以及如何在 PHP 中绑定变量将对改善这两个问题方面大有帮助。
如果您曾经对 Web 项目进行过测试,想必您一定会知道数据库交互通常是要求最高的过程。 在数据库中运行查询时,Oracle 必须先对查询进行分析,以确保它的语法正确,然后才执行实际的查询。 即使您运行多个相似查询也必须先进行分析:
SELECT * FROM movies WHERE movie_id=1
SELECT * FROM movies WHERE movie_id=26
SELECT * FROM movies WHERE movie_id=5689
尽管这三个查询之间的唯一差别体现在所获取的精确记录上,但 Oracle 仍将单独处理它们,并在执行之前分别对它们进行分析。 绑定变量的第一个好处是,Oracle 只需分析查询一次,而不管它究竟使用不同的值运行了多少次。 这种在脚本方法方面的改变可以极大地提高性能。
作为 Web 开发人员,您通常遇到的第二个问题是站点的安全性。 由于该问题体现在很多方面,因此找到解决它的方法无异于一场永无休止但却至观重要的战役。 在数据库驱动的站点中,许多查询都依赖于外部值,如用户从表单中提交的值、在 URL 中传递给页面的值等等。 此类查询很容易受到 SQL 注入攻击的破坏。 (“SQL 注入攻击”是指恶意用户在尝试破坏查询的过程中向 PHP 脚本提供无效数据。) 如果对查询的处理方法不当,恶意用户便有可能从生成的错误消息中了解一些有关脚本、数据库或服务器的信息。 以如下所示的查询为例:
By admin
read more