openSUSE之PHP学习之旅(7、ADODB)
ADODB 是 Active Data Objects Data Base 的简称,它是一种 PHP 存取数据库的中间函式组件。
使用 ADODB 最大的优点之一是:不管后端数据库如何,存取数据库的方式都是一致的,开发设计人员不必为了某一套数据库,而必须再学习另一套不同的存取方法,这大大减轻开发人员的知识负担,过去的知识往后仍可继续使用,转移数据库平台时,程序代码也不必做太大的更动。
本文是openSUSE之PHP学习之旅系列文章的续集。追溯到2009年末写的文章,当时用的是openSUSE11.0。而如今openSUSE11.4的开发环境部署依然可以参考:openSUSE之PHP学习之旅(1、环境配置)
首先回顾一下几个重要地方:
Apache默认的文档路径是/srv/www/htdocs/,
配置文件是/etc/apache2/httpd.conf,
其余的配置文件都存储在/etc/apache2/conf.d/文件夹中
php.ini 路径在/etc/php5/apache2
建议:用root身份登录操作会方便很多。
登录mysql 建立一个数据库叫mydb,再建立一张表叫info,插入2条测试数据。
linux-4k5v:/home/fantlam # mysql -uroot -p123456
Welcome to the MariaDB monitor. Commands end with ; or g.
Your MariaDB connection id is 1
Server version: 5.1.44b-MariaDB-log SUSE MariaDB RPM
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
MariaDB [(none)]> create database mydb;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> use mydb;
Database changed
MariaDB [mydb]> CREATE TABLE `info` (
-> `id` tinyint(1) NOT NULL auto_increment,
-> `name` varchar(250) NOT NULL,
-> `content` tinytext NOT NULL,
-> `lastdate` date NOT NULL,
-> PRIMARY KEY (`id`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Query OK, 0 rows affected (0.16 sec)
MariaDB [mydb]> insert into info values('','学习PHP','opensuse+php开发','2011-05-17');
Query OK, 1 row affected, 1 warning (0.10 sec)
MariaDB [mydb]> insert into info values('',' Linux视野','Linux图文教程','2011-05-17');
Query OK, 1 row affected, 1 warning (0.10 sec)
MariaDB [mydb]> select * from info;
+----+-------------+----------------------+------------+
| id | name | content | lastdate |
+----+-------------+----------------------+------------+
| 1 | Linux视野 | Linux图文教程 | 2011-05-17 |
| 2 | 学习PHP | opensuse+php开发 | 2011-05-17 |
+----+-------------+----------------------+------------+
2 rows in set (0.00 sec)
准备好测试数据后, 进入目录/srv/www/htdocs/adodb,新建adodbtest.php
<?php include_once("adodb5/adodb.inc.php"); $db = NewADOConnection('mysql'); //$db->debug = true;//调试,显示具体的SQL语句 $db->Connect("localhost", "root", "123456", "mydb"); $db->Execute("set names 'gbk'");//解决乱码 $result = $db->Execute("SELECT * FROM info"); /** if ($result === false) die("failed"); while (!$result->EOF) { for ($i=0, $max=$result->FieldCount(); $i < $max; $i++) print $result->fields[$i].' '; $result->MoveNext(); print "<br>"; } */ print "<pre>"; print_r($result->GetRows()); print "</pre>"; ?>
启动apache:/etc/init.d/apache2 start
可以看到已经成功连接数据库。
附:
1、PHP ADODB 地址方式连接数据库
<?php include_once("adodb5/adodb.inc.php"); $db = NewADOConnection("mysql://root:123456@localhost/mydb"); $db->Execute("set names 'gbk'");//解决乱码 $sql="SELECT * FROM info"; echo $db->SetFetchMode(ADODB_FETCH_NUM); $sr1 = $db->Execute($sql); print_r($sr1->fields); ?>
2、PHP ADODB 对象方式获取数据库内容
<?php include_once("adodb5/adodb.inc.php"); $db = NewADOConnection('mysql'); $db->Execute("set names 'gbk'");//解决乱码 $db->PConnect("localhost", "root", "123456", "mydb"); $sql="SELECT * FROM info"; $rs2=$db->Execute($sql); while($row=$rs2->FetchNextObject()){ print_r($row); } ?>
3、PHP ADODB HTML代码方式显示内容
<?php include_once("adodb5/adodb.inc.php"); include_once("adodb5/tohtml.inc.php"); $db = NewADOConnection('mysql'); $db->Connect("localhost", "root", "123456", "mydb"); $db->Execute("set names 'gbk'");//解决乱码 $sql="SELECT * FROM info"; $rs2=$db->Execute($sql); echo rs2html($rs2); ?>
4、PHP ADODB 实现内容自动分页功能
<?php include_once("adodb5/adodb.inc.php"); include_once("adodb5/adodb-pager.inc.php"); session_start(); $db = NewADOConnection('mysql'); $db->Connect("localhost", "root", "123456", "mydb"); $db->Execute("set names 'gbk'");//解决乱码 $sql="SELECT * FROM `info`"; $pager=new ADODB_Pager($db,$sql); $pager->Render(3); ?>