openSUSE之PHP学习之旅(7、ADODB)

2011年05月17日 Linux, SUSE/openSUSE 暂无评论

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身份登录操作会方便很多。

下载解压后:
linux-4k5v:/home/fantlam # cd 下载
linux-4k5v:/home/fantlam/下载 # mv adodb5 /srv/www/htdocs/adodb
我们准备数据以便进行测试,启动mysql
linux-4k5v:/home/fantlam # /etc/init.d/mysql start
Starting service MySQL                                               done

登录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
可以看到已经成功连接数据库。

openSUSE之PHP学习之旅(7、ADODB)

附:

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);
?>

给我留言