$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!
");
}
}
/*** 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数据库驱动简介 驱动是一段设计用来于一种特定类型的数据库服务器进行交互的...