数据库接口实验–php实现纲要–
这一次笔者将给出php实现的大体所需函数,最主要的部分已经贴上来了。之后我会给出完整的代码。
【准备知识】
【嵌入式SQL语言出现的理由】
通常DBMS支持的能直接访问数据库的是SQL语言,而SQL语言不象高级语言(例如C、C++等)具备很好的数据处理能力。通常的情况是需要将两种语言结合起来,利用SQL访问数据,而将数据传递给某种高级语言程序,处理后又利用SQL写回数据库。
这种嵌在高级语言程序中的SQL语句称为嵌入式SQL(或者称为ESQL),和以前使用的交互式SQL(或者称为ISQL)不一样,它们随着程序执行被调用,辅助程序完成数据库数据读写的功能,而高级语言程序则负责对数据库中的数据的分析处理转换等操作。
【嵌入式SQL语言的分类】
ESQL又分成两种,如果在程序执行前SQL的结构就已经确定,最多是可以在执行时传递一些数值参数,那么这种ESQL语句称为静态ESQL。
而通过ODBC、JDBC、OLEDB等访问数据库都是动态ESQL。SQL SERVER执行它们时因为无法事先确实知道是什么样的SQL语句,从而无法进行静态绑定,而这种绑定过程只能在程序执行过程中生成了确定的要执行的SQL语句时才能进行,称为动态绑定。
【php和odbc】In addition to normal ODBC support, the Unified ODBC functions in PHP allow you to access several databases that have borrowed the semantics of the ODBC API to implement their own API. Instead of maintaining multiple database drivers that were all nearly identical, these drivers have been unified into a single set of ODBC functions.
大致意思是:有了ODBC,就不需要再去为了不同的数据库引擎去专门写代码啦!这个东西是比较统一的!
【实现步骤】
1.配置PHP
笔者之前已经安装过了WAMP,但是在启动之前发现了Apache的80端口被占用了,占用者是SQLServer的一个服务。打开services.msc,关闭这SQLServer的reporting service服务。之后WAMP启动正常。
2.编写测试代码
PHP的相关链接在这里
php.net/manual/en/book.uodbc.php
新建conn.php文件
另外一个比较重要的函数是
如果需要统计影响的行数
3.现在这个php已经初步拥有了执行$query的能力,但是这明显还不足够。因为这些代码是已经写入到了脚本之中的。
接下来我们来创造一个可以执行用户输入的php脚本
//html脚本主要的部分
<?php //重要的php代码段,在form所提交的query.php之中 include_once 'conn/conn.php'; $query=$_GET['submit_input']; print "The query is : $query
"; //这个函数是由上面给的几个odbc函数封装的,你也可以分开来写 myquery($query); ?>
【小总结】 1)将数据库和程序连接在一起,可以极大的拓展程序的功能和适用范围,同时也可以增加数据库的使用范围,使更多的工作得到更好的解决方案。因此,学习了ODBC等的数据库接口,对我们的编程能力进一步提高,有很大的好处。 2)使用ODBC有一个好处是连接池(就是缓存),可以减少连接数据库的次数。连接数据库要花费相对较多的时间,减少连接次数就等于减少了查询所花费的时间,增加了开发人员和管理人员的开发效率。 3)瑕疵:这个东西依然有一些小问题。例如:我并没有加入权限验证,等于这依然无法使用。只能在自己适配号的机器上运行。之后可以慢慢改进。