$dbh = new PDO("pgsql:host=$host;port=5432;dbname=$db;user=$user;password=$pass");
这里只以mysql、postgresql为例,事实上,pdo这种抽象层方式可以访问目前主流的大多数的数据库,并且pdo将成为php6的默认数据库连接方式,更多详情请参阅
odbc是一种应用程序编程接口(application programming interface,api),使我们有能力连接到某个数据源(比如一个ms access 数据库)
1. 首先,对于odbc 系统,它充当的是编程语言系统
2. 其次,对于数据存储系统,它充当的是 odbc 系统。
所 以,odbc 需要一个"对odbc而言是编程语言"的驱动程序(例如php-odbc库)和一个"对数据存储系统而言是odbc"的驱动程序(比如 mysql-odbc库)。除了odbc系统本身之外,odbc还可以处理数据源的配置,允许数据源和编程语言之间存在模糊性。
和之前学习的扩展api接口、pdo略有不同的是,使用odbc连接数据库要稍微麻烦一点(至少我个人这么觉得),这个"麻烦"体现在我们需要对目标数据库服务器的操作系统进行一些配置,即创建odbc数据源,然后才可以进行odbc连接
1. 在控制面板中打开管理工具
2. 双击其中的数据源 (odbc)图标
3. 选择系统 dsn 选项卡
4. 点击系统 dsn 选项卡中的"添加"按钮
5. 选择 microsoft access driver。点击完成
6. 在下一个界面,点击“选择”来定位数据库
7. 为这个数据库取一个数据源名 (dsn)
8. 点击确定
//连接一个odbc数据源,无帐号、密码
$conn = odbc_connect('northwind', '', '');
if (!$conn)
{
exit("connection failed: " . $conn);
}
$sql = "select * from p8_ad_user";
$rs = odbc_exec($conn, $sql);
if (!$rs)
{
exit("error in sql");
}
echo "
"; echo "
companyname | ";
echo "
contactname |
"; while (odbc_fetch_row($rs))
{
$username = odbc_result($rs, "username");
$password = odbc_result($rs, "password");
echo "
| $username | "; echo "
$password |
";
}
odbc_close($conn);
echo "
";
?>
复制代码
0x4: 使用dbx与数据库通信
php本身内置了dbx函数,dbx模块是一个数据库抽象层(dbx中的"x"就表示其所能支持的x种数据库)。dbx函数允许你访问所有dbx支持的数据库。
dbx支持下列数据库:
1. mysql
2. odbc
3. pgsql
4. mssql(microsoft sql server)
5. fbsql
download:
http://pecl.php.net/package/dbx
http://rpmfind.net/linux/rpm2html/search.php?query=php-dbx
code:
复制代码
a php-dbx url organizer
p, ul, td, h1, h2, h3
{
font-family: verdana, helvetica, sans-serif;
}
/*****
* table definition for this example:
* create table urls (
* url varchar(128) not null,
* description text,
* primary key (url));
*****/
//define $module as dbx_mysql, dbx_mssql, dbx_pgsql, or your supported database
$module = dbx_pgsql;
$server = "localhost";
$user = "root";
$password = "111";
$database = "company";
/* functions */
function get_urls($dbconn, $sql)
{
$result = @dbx_query($dbconn, $sql);
if ( $result == 0 )
{
echo dbx_error($dbconn);
}
else
{
return $result;
}
}
function url($action, $dbconn, $url, $description)
{
if($action == "add")
{
$sql = "insert into urls values('$url', '$description')";
}
elseif($action == "delete")
{
$url = urldecode($url);
$sql = "delete from urls where url = '$url'";
}
$result = @dbx_query($dbconn, $sql);
if ( $result == 0 )
{
echo "
error adding url: " . dbx_error($dbconn);
}
else
{
print("
$action : $url succeeded!
PHP5学习对象教程
PHP5学习对象教程由美国人古曼兹、贝肯、瑞桑斯编著,简张桂翻译,电子工业出版社于2007年12月1日出版的关于PHP5应用程序的技术类图书。该书全面介绍了PHP 5中的新功能、编程方法及设计模式,还分析阐述了PHP 5中新的数据库连接处理、错误处理和XML处理等机制,帮助读者系统了解、熟练掌握和高效应用PHP。
下载
");
}
}
/*** main ***/
$dbconn = dbx_connect($module, $server, $database, $user, $password) or die("cannot connect to database");
?>
php dbx url organizer
url: description:
if(isset($addurl))
{
url("add", $dbconn, $url, $description);
}
if(isset($delete))
{
url("delete", $dbconn, $delete, "");
}
$sql = "select * from urls";
$result = get_urls($dbconn, $sql);
if(sizeof($result->data) == 0)
{
?>
sorry, there are no urls in the database. you should add some.
}
else
{
?>
for($i = 0; $i data); $i++)
{
?>
}
?>
}
?>
复制代码
0x5: 使用dba(database (dbm-style) abstraction layer)与数据库通信
php的dba抽象层是用来支持berkeley db这种文件型数据库的。
these functions build the foundation for accessing berkeley db style databases.
在柏克莱的bsd系列操作系统中,有个简单的数据库结构,它以数个文件组成超小型的数据库系统,架构成抽象层(abstraction layer)的dba数据库。
目前php支持的dba数据库包括
复制代码
1. dbm: 柏克莱发展的最早期dba数据库
http://en.wikipedia.org/wiki/dbm
2. ndbm: 较新且较有弹性的dba
http://en.wikipedia.org/wiki/ndbm
3. gdbm: gnu 发展的dba
ftp://ftp.gnu.org/pub/gnu/gdbm/
4. db2: 由sleepycat
软件开发的db2(非ibm的db2)
http://www.openldap.org/lists/openldap-software/199905/msg00009.html
5. cdb: 这是qmail作者开发快速可靠的dba
http://pobox.com/~djb/cdb.html
复制代码
安装好dba后,使用如下代码进行连接
复制代码
$id = dba_open ( "/tmp/test.db" , "n" , "db2" );
if(! $id )
{
echo "dba_open failedn" ;
exit;
}
dba_replace ( "key" , "this is an example!" , $id );
if( dba_exists ( "key" , $id ))
{
echo dba_fetch ( "key" , $id );
dba_delete ( "key" , $id );
}
dba_close ( $id );
?>
复制代码
3. 后记
以上就是php连接数据库的不同方式的学习,通过本文的学习,我们了解到一点
目前php开发中主流使用的连接数据库的技术是
1. mysql扩展api
2. mysqli扩展api
3. pdo抽象层
下一步希望做的事
1. 研究一下php和mysql进行交互的协议驱动的底层原理
2. 尝试编程简单的通信协议驱动
http://www.bkjia.com/PHPjc/762932.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/762932.htmlTechArticle目录 1. PHP数据库驱动简介 2. PHP连接数据库的不同方式 1. PHP数据库驱动简介 驱动是一段设计用来于一种特定类型的数据库服务器进行交互的...