受制于人的人,灵魂是跪着的 欲制他人的人,灵魂是坐着的 具有独立人格的人,灵魂是站着的

【转】PHP PEAR中Database(DB)使用介绍

上一篇 / 下一篇  2007-02-23 13:57:17 / 个人分类:php

转:http://www.soudie.net/top_52456_cat_21/
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连接实例

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

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

// 记得永远要检查执行的动作是否有错误 
if (DB::isError($res)) { 
    die($res->getMessage()); 

//按默认方式DB_FETCHMODE_ORDERED,循环显示,输出结果,这种方式下,只能以序号的方式来访问数据字段 
while ($row =& $res->fetchRow()) { 
    echo $row[0] . "<br />\n"


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


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

$resPage 10

$to $from $resPage

foreach (range($from$to) as $rowNum) { 
    if (!$row =& $res->fetchRow($fetchmode$rowNum)) { 
        break; 
    } 
    echo $row[0] . "\n"

//
释放资源 
$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使用详解

当要多次执行一组查询,

TAG: php

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

数据统计

  • 访问量: 19353
  • 日志数: 87
  • 图片数: 9
  • 书签数: 1
  • 建立时间: 2006-09-30
  • 更新时间: 2007-08-26

RSS订阅