PHP访问MySQL数据库的几种方法 。
一、使用PHP访问MySQL数据库 这里我要讲的是就是用mysql_*函数组和mysqli_*函数组来访问MySQL数据库。
(一):使用PHP的mysql_*函数组访问MySQL数据库
Php代码
$conn=mysql_connect("hostname","username","password")ordie("链接数据库失败");
mysql_select_db("");
$sql="";
$rs=mysql_query($sql,$conn);
mysql_free_result($rs);
mysql_close($conn);
?><?php
$conn=mysql_connect("hostname","username","password") or die("链接数据库失败");
mysql_select_db("");
$sql="";
$rs=mysql_query($sql,$conn);
mysql_free_result($rs);
mysql_close($conn);
?>
(二):使用PHP的mysqli_*函数组访问MySQL数据库
Php代码
$mysqli=mysqli_connect("hostname","username","password","database");
if(mysqli_connect_errno()){
printf("Connect failed:%s\n",mysqli_connect_error());
exit();
}else{
$sql="";
$rs=mysqli_query($mysqli,$sql);
if($rs===TRUE){
echo"sucessfully!";
}else{
echo"failed!";
}
mysqli_close($mysqli);
}
?><?php
$mysqli=mysqli_connect("hostname","username","password","database");
if(mysqli_connect_errno()){
printf("Connect failed:%s\n",mysqli_connect_error());
exit();
}else{
$sql="";
$rs=mysqli_query($mysqli,$sql);
if($rs===TRUE){
echo "sucessfully!";
}else{
echo "failed!";
}
mysqli_close($mysqli);
}
?>
二、使用自建类访问MySQL数据库
三、使用ADODB访问MySQL数据库
ADODB类库简洁
ADODB(active data object data base)是一套由php编写的数据库系统函数,adobd提供了一套标准的数据库操作接口。
adodb支持的数据库已发展到:mysql,postgresql,oracle,interbase,microsoft sql server,access,foxpro,sybase,odbc,ado
用adodb类库与数据库建立连接
无论何种数据库使用php时首先要做的就是先连接到该数据库服务器上,adodb类库使用ADOConnection对象进行连接。
要使用adodb类库首先要到官网上去下载一个类库(http://adodb.sourceforge.net ),然后解压缩到当前的一个文档中,
在使用它之前使用include("adodb/adodb.inc.php")将其包含进来,下面开始进行对其连接数据库服务器....
(一)、
Php代码
include("adodb/adodb.inc.php");
//告诉adodb我们要连接的数据库类型
$db=NewADOConnection("mysql");
//连接数据库,将返回一个false或则true
$link=$db->Connect("localhost","root","dd0633LSL");
if(!$link){
//输出并停止程序的运行
die("
数据库连接失败!
");}
echo"
数据库连接成功
";?>;<?php
include("adodb/adodb.inc.php");
//告诉adodb我们要连接的数据库类型
$db=NewADOConnection("mysql");
//连接数据库,将返回一个false或则true
$link=$db->Connect("localhost","root","dd0633LSL");
if(!$link){
//输出并停止程序的运行
die("
数据库连接失败!
");}
echo "
数据库连接成功
";?>;
adodb使用面向对象的方法对各种数据库进行管理,使用不同的类对不同的数据库进行操作,
这些事情都是在ADOConnection函数中进行的,用户要做的只是告诉ADOConnection()一个合法的数据库驱动器名。
这个函数就会返回一个adodb对象,接着就可以使用这个对象中的Connect()方法对数据库进行连接,
如上段代码中的$db->Connect("host","user","pass"),在adodb类库中可以有多0种连接数据库的方式:
1,非持久连接Connect()该种连接的好处在于能够减少数据库于WEB服务器之间产生过载的危险。
2,持久性连接PConnect()持久性连接,这样做数据库的连接不会断掉所以速度很快
(二)、使用dsn数据源进行连接
dsn的格式如:driver://username:password@hostname/database[?option[=value]]
使用了dsn后ADOConnection()将自动调用方法Conect()或PConect()建立一个非持久性连接或一个持久性的连接,
在建立连接时依据option/value的值判断为持久连接还是非持久性连接,这样连接成功会返回一个true失败返回一个false.
Php代码
include("adodb/adodb.inc.php");
//非持久性连接
$dsn="mysql://root:dd0633LSL@localhost/adodb";
/*
持久性连接
$dsn="mysql://root:dd0633LSL@localhost/adodb?persist";//或者persistent
*/
$db=NewADOConnection($dsn);
if(!$db){
die("数据库连接失败!");
}
echo"连接成功";
?><?php
include("adodb/adodb.inc.php");
//非持久性连接
$dsn="mysql://root:dd0633LSL@localhost/adodb";
/*
持久性连接
$dsn="mysql://root:dd0633LSL@localhost/adodb?persist";//或者persistent
*/
$db=NewADOConnection($dsn);
if(!$db){
die("数据库连接失败!");
}
echo "连接成功";
?>
--------------------------------------------------------------------------------------
数据库中执行查询操作
通常使用select语句进行检索或查询数据adodb中通常使用execute()方法执行数据库查询,如果成功则返回ADORecordSet对象,
它包含一个查询结果的纪录集。在ADORecordSet对象中有很多的方法可以对纪录集进行操作如:
-----------------------------------------------------------------------------------------------------------------------------
FetchRow() 返回当前行的纪录数组,遇到EOF则返回false(adodb5.04是乎已经能够自动下移指针)
FetchInto(&$array) 将当前行的纪录放入数组$array中,遇到EOF返回false,否则返回1
FetchObject($toupper=ture) 返回当前行的纪录组成的对象,与FetchRow()方法类似,如果$toupper的值为真则返回的属性将全部转为大写
FetchObj() 与FEtchObject(false)类似,只是返回字段名不会被转换
FetchNextObject($toupper=ture) 返回当前的纪录组成的对象并自动移动到下一行纪录,如果topper的值为真则返回的对象的属性名全部为大写
FetchNextObj() 与FetchNextObject()类是知识返回的值不会被替换
MoveNext()将纪录指针从当前纪录位置移动到下一纪录行。如同move()
-----------------------------------------------------------------------------------------------------------------------------
一个例子
---------------------------------------------------------------------
Php代码
include("adodb/adodb.inc.php");
//这里是建立的mysql数据库
//$dsn="mysql://root:dd0633LSL@localhost/adodb";
//$db=& NewADOConnection($dsn);
//下面连接access数据库
$drive="driver={Microsoft Access Driver (*.mdb)};Dbq="realpath("date/db1.mdb").";Uid=;Pwd=;";
$db=NewADOConnection("access");
$db->Connect($drive);
$query="select * from user";
$RecordSet=&$db->Execute($query);
if(!$RecordSet)
{
echo$db->ErrorMsg();
}else{
//echo $RecordSet->RecordCount();
while($arr=$RecordSet->FetchRow()){
echo$arr[0]."----".$arr[1]."----".$arr[2]."
";
}
}
$RecordSet->close();
$db->close();
?>;
* 注:在测试时弄了不少麻烦,使用access时,首先配置数据源:在控制面板---管理工具---数据源ODBC---在用户DSN里选择MS ACCESS DATABASE----选择 Microsoft Access Driver---输入数据原名,选择数据库点击完成,即配置好数据源,以免出现数据源错误。
在上例中可以使用SetFetchMode()方法设置返回的模式,该方法的值可以设置为:
ADODB_FETCH_DEFAULT:默认模式,依赖于数据可得行为可能是下面三个值之一
ADODB_FETCH_NUM:一数字索引作为建
ADODB_FETCH_ASSOC:以字段名作为键
ADODB_FETCH_BOTH:分别以数字索引和字段作为键
SetFetchMode()的应用范例
include("adodb/adodb.inc.php");
$db=NewADOConnection("mysql://root:dd0633LSL@localhost/adodb");
//可以把设置模式的值更换一下来看效果
$db->SetFetchMode(ADODB_FETCH_NUM);
$rst1=$db->Execute("select * from user");
print_r($rst1->fields);
?>;<?php
include("adodb/adodb.inc.php");
//这里是建立的mysql数据库
//$dsn="mysql://root:dd0633LSL@localhost/adodb";
//$db=& NewADOConnection($dsn);
//下面连接access数据库
$drive="driver={Microsoft Access Driver (*.mdb)};Dbq="realpath("date/db1.mdb").";Uid=;Pwd=;";
$db=NewADOConnection("access");
$db->Connect($drive);
$query="select * from user";
$RecordSet=&$db->Execute($query);
if(!$RecordSet)
{
echo $db->ErrorMsg();
}else{
//echo $RecordSet->RecordCount();
while($arr=$RecordSet->FetchRow()){
echo $arr[0]."----".$arr[1]."----".$arr[2]."
";
}
}
$RecordSet->close();
$db->close();
?>;
* 注:在测试时弄了不少麻烦,使用access时,首先配置数据源:在控制面板---管理工具---数据源ODBC---在用户DSN里选择MS ACCESS DATABASE----选择 Microsoft Access Driver---输入数据原名,选择数据库点击完成,即配置好数据源,以免出现数据源错误。
在上例中可以使用SetFetchMode()方法设置返回的模式,该方法的值可以设置为:
ADODB_FETCH_DEFAULT:默认模式,依赖于数据可得行为可能是下面三个值之一
ADODB_FETCH_NUM:一数字索引作为建
ADODB_FETCH_ASSOC:以字段名作为键
ADODB_FETCH_BOTH:分别以数字索引和字段作为键
SetFetchMode()的应用范例
include("adodb/adodb.inc.php");
$db=NewADOConnection("mysql://root:dd0633LSL@localhost/adodb");
//可以把设置模式的值更换一下来看效果
$db->SetFetchMode(ADODB_FETCH_NUM);
$rst1=$db->Execute("select * from user");
print_r($rst1->fields);
?>;
---------------------------------------------------------------------
ADOConnection对象的方法
在ADOConnection对象中还有个方法叫做Selectlimit()该方法用于解决一些数据库不能对select...limit的支持,该方法调用后返回一个ADOConnection对象。
-----------------------------------------------------------
Php代码
include("adodb/adodb.inc.php");
//这里是建立的mysql数据库
//$dsn="mysql://root:dd0633LSL@localhost/adodb";
//$db=& NewADOConnection($dsn);
//下面连接access数据库
$drive="driver={Microsoft Access Driver (*.mdb)};Dbq="realpath("date/db1.mdb").";Uid=;Pwd=;";
$db=NewADOConnection("access");
$db->Connect($drive);
$query="select * from user";
//SelectLimit从第3条开始之多返回2条记录
$RecordSet=&$db->SelectLimit($query,2,3);
if(!$RecordSet)
{
echo$db->ErrorMsg();
}else{
//echo $RecordSet->RecordCount();
while($arr=$RecordSet->FetchRow()){
echo$arr[0]."----".$arr[1]."----".$arr[2]."
";
}
}
$RecordSet->close();
$db->close();
?>;<?php
include("adodb/adodb.inc.php");
//这里是建立的mysql数据库
//$dsn="mysql://root:dd0633LSL@localhost/adodb";
//$db=& NewADOConnection($dsn);
//下面连接access数据库
$drive="driver={Microsoft Access Driver (*.mdb)};Dbq="realpath("date/db1.mdb").";Uid=;Pwd=;";
$db=NewADOConnection("access");
$db->Connect($drive);
$query="select * from user";
//SelectLimit从第3条开始之多返回2条记录
$RecordSet=&$db->SelectLimit($query,2,3);
if(!$RecordSet)
{
echo $db->ErrorMsg();
}else{
//echo $RecordSet->RecordCount();
while($arr=$RecordSet->FetchRow()){
echo $arr[0]."----".$arr[1]."----".$arr[2]."
";
}
}
$RecordSet->close();
$db->close();
?>;
-----------------------------------------------------------
::rs2html()方法
rs2html方法将传入的ADORecordSet对象转化为html表格的格式,使用时需要先把 tohtml.inc.php 包含进来。
执行插入与更新操作
在adodb中向数据库插入或则更新数据,可以使用execute()方法,再插入数据时一般都要对数据进行一些处理,以便使数据库能够接受
对于一些数据库对于日期格式和字符串的处理方式不同首先要对要插入的数据进行处理,使用adodb提供的函数如
DBDate(),SQLDate()
qStr()::处理字符串中简单地引号问题
ADODB类库中的几个常用函数
Affected_Rows()
Insert_ID()
这两个函数分别对应的是mysql_affected_rows() mysql_insert_id()
自动执行insert和update
AutoExecute($table,$arrFields,$mode,$where)
$table::数据表$arrfields::数据$mode::"INSERT"或者"UPDATE"$WHERE条件
::关于分页函数的使用::
在文件adodb-pager.inc.php中生成对象ADODB_Pager($db,$query);
例如:
include("adodb-pager.inc.php");
$query="select * from user ";
$pager=new ADODB_Pager();
//设置如许以HTML格式显示数据
$pager->htmlSpecialChars=false;
$pager->Render(5);
使用分页函数的时候可以更改adodb-pager.inc.php里的内容来实现输出数据的格式
四、使用Adodb.Connection访问MySQL数据库
此时不需要adodb类库?
Php代码
try{
$com=newCOM("Adodb.Connection");
$com->open("Driver={SQL Server};server=(local);uid=sa;pwd=*****;database=*****;");
}catch(com_exception$e){
die($e->getMessage());
}try{
$rs=newCOM("Adodb.RecordSet");
$rs->open("select * from user_list",$com,1,1);
}catch(com_exception$e){
die($e->getMessage());
}
$AllCount=$rs->RecordCount;
for($i=1;$i
echo($rs["u_id"]->value."
");
$rs->MoveNext();
}
$rs->Close();
$rs= null;
$com->Close();
$com= null;
?>try{
$com = new COM("Adodb.Connection");
$com->open("Driver={SQL Server};server=(local);uid=sa;pwd=*****;database=*****;");
}catch(com_exception $e){
die($e->getMessage());
}try{
$rs = new COM("Adodb.RecordSet");
$rs->open("select * from user_list",$com,1,1);
}catch(com_exception $e){
die($e->getMessage());
}
$AllCount = $rs->RecordCount;
for($i=1;$i
echo($rs["u_id"]->value."
");
$rs->MoveNext();
}
$rs->Close();
$rs = null;
$com->Close();
$com = null;
?>
五、使用ODBC连接mysql
通过一个 ODBC 连接,您可以连接到您的网络中的任何计算机上的任何数据库,只要 ODBC 连接是可用的。
1.打开控制面板中的ODBC数据源管理器,确认在驱动程序中已经存在mysql odbc driver(window 2003自动有装)
2.在系统DSN中添加一个数据源,输入
data source name :mysqlodbc,
user:root,
password:root,
选择database然后确定
3.输入代码
Php代码
$conn=odbc_connect('mysqlodbc','root','root');
if(!$conn){exit("Connection Failed: ".$conn);}
$sql="SELECT * FROM class";
$rs=odbc_exec($conn,$sql);
if(!$rs) {exit("Error in SQL");}
echo"
echo"
id";echo"
name";while(odbc_fetch_row($rs)){
$id=odbc_result($rs,"id");
$name=odbc_result($rs,"name");
echo"
$id";echo"
$name";}
odbc_close($conn);
echo"
";?><?php
$conn=odbc_connect('mysqlodbc','root','root');
if (!$conn){exit("Connection Failed: " . $conn);}
$sql="SELECT * FROM class";
$rs=odbc_exec($conn,$sql);
if (!$rs) {exit("Error in SQL");}
echo "
echo "
id";echo "
name";while (odbc_fetch_row($rs)){
$id=odbc_result($rs,"id");
$name=odbc_result($rs,"name");
echo "
$id";echo "
$name";}
odbc_close($conn);
echo "
";?>