PHP学会网 php培训网 PHP暑期培训 PHP寒假培训 PHP假期培训 » PHP中高级 » PHP PEAR中Database(DB)使用介绍
本页主题: PHP PEAR中Database(DB)使用介绍 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

自由的龙

该用户目前不在线
级别: 中级程序员
精华: 1
发帖: 1264
威望: 1267 点
金钱: 12660 PYMB
贡献值: 0 点
在线时间:0(小时)
注册时间:2006-04-16
最后登录:2006-06-27

PHP PEAR中Database(DB)使用介绍


DSN连接方式

DB目前支持的连接方式如下
最完整的格式:
phptype(dbsyntax)://username:password@protocol+hostspec/database?option=value
别外还有一些缩写的格式:
phptype://username:password@protocol+hostspec:110//usr/db_file.db
phptype://username:password@hostspec/database
phptype://username:password@hostspec
phptype://username@hostspec
phptype://hostspec/database
phptype://hostspec
phptype:///database
phptype:///database?option=value&anotheroption=anothervalue
phptype(dbsyntax)
phptype

其中phptype表示数据库类型,可用的选项有:
dbase -> dBase
fbsql -> FrontBase
ibase -> InterBase
ifx   -> Informix
msql   -> Mini SQL
mssql -> Microsoft SQL Server
mysql -> MySQL (for MySQL <= 4.0)
mysqli -> MySQL (for MySQL >= 4.1) (since DB 1.6.3)
oci8   -> Oracle 7/8/9
odbc   -> ODBC (Open Database Connectivity)
pgsql -> PostgreSQL
sqlite -> SQLite
sybase -> Sybase

以下是一些常用的连接例子:

l     连到一非标准端口的数据库

pgsql://user:pass@tcp(localhost:5555)/pear

l     通过SOCKET方式连到数据库

mysql://user@unix(/path/to/socket)/pear

l     在UNIX机上,连接SQLite数据库

sqlite:////full/unix/path/to/file.db?mode=0666

l     在Windows机上,连接SQLite数据库

sqlite:///c:/full/windows/path/to/file.db?mode=0666

l     使用SSL,连接到MySQLi

mysqli://user:pass@localhost/pear?key=client-key.pem&cert=client-cert.pem

l     通过ODBC连接到一个ACCESS数据库

odbc(access)://username:password@/datasourcename


DB连接实例


CODE:[Copy to clipboard]<?php
require_once 'DB.php';

$dsn = 'mysql://username:password@localhost/dbname';
/**
也可以用以下的方式
$dsn = array(
  'phptype' => 'pgsql',
  'username' => 'someuser',
  'password' => 'apasswd',
  'hostspec' => 'localhost',
  'database' => 'thedb',
);
*/
//$options是可选的
$options = array(
  'debug'     => 2,
  'portability' => DB_PORTABILITY_ALL,
);
$db =& DB::connect($dsn, $options);
if (DB::isError($db)) {
  die($db->getMessage());
}

//设置数据库的默认查询方式
$db->setFetchMode(DB_FETCHMODE_ASSOC);

//执行一个普通的查询语句
$res =& $db->query('SELECT * FROM products');
//取得一个SQL查询的结果集行,列数
printf("共有%d行,%d列数据", $res->numRows(), $res->numCols());
//当前表的结构信息
echo ("<pre>");
print_r($db->tableInfo($res));
echo ("</pre>");

//执行一个带参数的查询
$sql = 'select * from products where products_id < ?';
$data = 50;

$res =& $db->query($sql, $data);
//执行含有多个参数的查询
$sql = 'select * from products where products_volt < ? and products_capacity > ?';
$data = array(10, 4000);

$res =& $db->query($sql, $data);

// 记得永远要检查执行的动作是否有错误
if (DB::isError($res)) {
  die($res->getMessage());
}
//按默认方式DB_FETCHMODE_ORDERED,循环显示,输出结果,这种方式下,只能以序号的方式来访问数据字段
while ($row =& $res->fetchRow()) {
  echo $row[0] . "<br />
";
}

//按DB_FETCHMODE_ASSOC方式,循环显示,输出结果,这种方式下,以字段名称的方式来访问数据字段
while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
  echo $row['id'] . "
";
}

//获取指定范围的行数据
$from = 50;

$resPage = 10;

$to = $from + $resPage;

foreach (range($from, $to) as $rowNum) {
  if (!$row =& $res->fetchRow($fetchmode, $rowNum)) {
    break;
  }
  echo $row[0] . "
";
}
//释放资源
$res->free();

//通过getAll(),可以获取整个查询的结果集
$result = $db->getAll("select * from tablename");
//得到UPDATE/INSERT/DELETE等语句,所影响的行数
$db->query('DELETE * FROM clients');
echo 'I have deleted ' . $db->affectedRows() . ' clients';
//close database connection
$db->disconnect();
?>
Prepare/Execute使用详解
当要多次执行一组查询,只是有些参数不同时
INSERT INTO tle_name(col1, col2) VALUES(‘val1’, val2);
INSERT INTO tle_name(col1, col2) VALUES(‘val3’, val4);
……
或者你的语句要符合多个不同语法的数据库时db1: INSERT INTO tbl_name (col1, col2) VALUES (expr1, expr2)
db2: INSERT INTO tbl_name SET col1=expr1, col2=expr2
可以使用prepare/execute语句
顶端 Posted: 2006-04-25 16:10 | [楼 主]
PHP学会网 php培训网 PHP暑期培训 PHP寒假培训 PHP假期培训 » PHP中高级

时:11-23 20:42 Copyright © 2006 phpwhy.com 权
ICP05060669

曳息 -