A. 如何用php連接mdb資料庫
以下為幾個php連接access資料庫和操作acess數據的方法,全部做成了類,應用起來也更方便,也可摘用其中的部分代碼應用。
<?php
--------------------------------------------------------------------
//FileName:class.php
//Summary: Access資料庫操作類
// 使用範例:
//$databasepath="database.mdb";
//$dbusername="";
//$dbpassword="";
//include_once("class.php");
//$access=new Access($databasepath,$dbusername,$dbpassword);
--------------------------------------------------------------------
class Access
{
var $databasepath,$constr,$dbusername,$dbpassword,$link;
function Access($databasepath,$dbusername,$dbpassword)
{
$this->databasepath=$databasepath;
$this->username=$dbusername;
$this->password=$dbpassword;
$this->connect();
}
function connect()
{
$this->constr="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath($this->databasepath);
$this->link=odbc_connect($this->constr,$this->username,$this->password,SQL_CUR_USE_ODBC);
return $this->link;
//if($this->link) echo "恭喜你,資料庫連接成功!";
//else echo "資料庫連接失敗!";
}
function query($sql)
{
return @odbc_exec($this->link,$sql);
}
function first_array($sql)
{
return odbc_fetch_array($this->query($sql));
}
function fetch_row($query)
{
return odbc_fetch_row($query);
}
function total_num($sql)//取得記錄總數
{
return odbc_num_rows($this->query($sql));
}
function close()//關閉資料庫連接函數
{
odbc_close($this->link);
}
function insert($table,$field)//插入記錄函數
{
$temp=explode(',',$field);
$ins='';
for ($i=0;$i<count($temp);$i++)
{
$ins.="'".$_POST[$temp[$i]]."',";
}
$ins=substr($ins,0,-1);
$sql="INSERT INTO ".$table." (".$field.") VALUES (".$ins.")";
$this->query($sql);
}
function getinfo($table,$field,$id,$colnum)//取得當條記錄詳細信息
{
$sql="SELECT * FROM ".$table." WHERE ".$field."=".$id."";
$query=$this->query($sql);
if($this->fetch_row($query))
{
for ($i=1;$i<$colnum;$i++)
{
$info[$i]=odbc_result($query,$i);
}
}
return $info;
}
function getlist($table,$field,$colnum,$condition,$sort="ORDER BY id DESC")//取得記錄列表
{
$sql="SELECT * FROM ".$table." ".$condition." ".$sort;
$query=$this->query($sql);
$i=0;
while ($this->fetch_row($query))
{
$recordlist[$i]=getinfo($table,$field,odbc_result($query,1),$colnum);
$i++;
}
return $recordlist;
}
function getfieldlist($table,$field,$fieldnum,$condition="",$sort="")//取得記錄列表
{
$sql="SELECT ".$field." FROM ".$table." ".$condition." ".$sort;
$query=$this->query($sql);
$i=0;
while ($this->fetch_row($query))
{
for ($j=0;$j<$fieldnum;$j++)
{
$info[$j]=odbc_result($query,$j+1);
}
$rdlist[$i]=$info;
$i++;
}
return $rdlist;
}
function updateinfo($table,$field,$id,$set)//更新記錄
{
$sql="UPDATE ".$table." SET ".$set." WHERE ".$field."=".$id;
$this->query($sql);
}
function deleteinfo($table,$field,$id)//刪除記錄
{
$sql="DELETE FROM ".$table." WHERE ".$field."=".$id;
$this->query($sql);
}
function deleterecord($table,$condition)//刪除指定條件的記錄
{
$sql="DELETE FROM ".$table." WHERE ".$condition;
$this->query($sql);
}
function getcondrecord($table,$condition="")// 取得指定條件的記錄數
{
$sql="SELECT COUNT(*) AS num FROM ".$table." ".$condition;
$query=$this->query($sql);
$this->fetch_row($query);
$num=odbc_result($query,1);
return $num;
}
}
?>
22222222
class.php文件:
[php]
<?php
class Access//Access資料庫操作類
{
var $databasepath,$constr,$dbusername,$dbpassword,$link;//類的屬性
function Access($databasepath,$dbusername,$dbpassword)//構造函數
{
$this->databasepath=$databasepath;
$this->username=$dbusername;
$this->password=$dbpassword;
$this->connect();
}
function connect()//資料庫連接函數
{
$this->constr="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath($this->databasepath);
$this->link=odbc_connect($this->constr,$this->username,$this->password,SQL_CUR_USE_ODBC);
return $this->link;
//if($this->link) echo "恭喜你,資料庫連接成功!";
//else echo "資料庫連接失敗!";
}
function query($sql)//送一個查詢字元串到資料庫中
{
return @odbc_exec($this->link,$sql);
}
function first_array($sql)//從access資料庫中返回一個數組
{
return @odbc_fetch_array($this->query($sql));
}
function fetch_row($query)//返回記錄中的一行
{
return odbc_fetch_row($query);
}
function total_num($sql)//取得記錄總數
{
return odbc_num_rows($this->query($sql));
}
function close()//關閉資料庫連接函數
{
odbc_close($this->link);
}
function insert($table,$field)//插入記錄函數
{
$temp=explode(',',$field);
$ins='';
for ($i=0;$i {
$ins.="'".$_POST[$temp[$i]]."',";
}
$ins=substr($ins,0,-1);
$sql="INSERT INTO ".$table." (".$field.") VALUES (".$ins.")";
$this->query($sql);
}
function getinfo($table,$field,$id,$colnum)//取得當條記錄詳細信息
{
$sql="SELECT * FROM ".$table." WHERE ".$field."=".$id."";
$query=$this->query($sql);
if($this->fetch_row($query))
{
for ($i=1;$i<$colnum;$i++)
{
$info[$i]=odbc_result($query,$i);
}
}
return $info;
}
function getlist($table,$field,$colnum,$condition,$sort="ORDER BY id DESC")//取得記錄列表
{
$sql="SELECT * FROM ".$table." ".$condition." ".$sort;
$query=$this->query($sql);
$i=0;
while ($this->fetch_row($query))
{
$recordlist[$i]=getinfo($table,$field,odbc_result($query,1),$colnum);
$i++;
}
return $recordlist;
}
function getfieldlist($table,$field,$fieldnum,$condition="",$sort="")//取得記錄列表
{
$sql="SELECT ".$field." FROM ".$table." ".$condition." ".$sort;
$query=$this->query($sql);
$i=0;
while ($this->fetch_row($query))
{
for ($j=0;$j<$fieldnum;$j++)
{
$info[$j]=odbc_result($query,$j+1);
}
$rdlist[$i]=$info;
$i++;
}
return $rdlist;
}
function updateinfo($table,$field,$id,$set)//更新記錄函數
{
$sql="UPDATE ".$table." SET ".$set." WHERE ".$field."=".$id;
$this->query($sql);
}
function deleteinfo($table,$field,$id)//刪除記錄函數
{
$sql="DELETE FROM ".$table." WHERE ".$field."=".$id;
$this->query($sql);
}
function deleterecord($table,$condition)//刪除指定條件的記錄函數
{
$sql="DELETE FROM ".$table." WHERE ".$condition;
$this->query($sql);
}
function getcondrecord($table,$condition="")//取得指定條件的記錄數函數
{
$sql="SELECT COUNT(*) AS num FROM ".$table." ".$condition;
$query=$this->query($sql);
$this->fetch_row($query);
$num=odbc_result($query,1);
return $num;
}
}
?>
[/php]
資料庫連接文件:
[php]
<?php
$databasepath="data/database.mdb";//資料庫路徑
$dbusername="";//資料庫用戶名
$dbpassword="";//資料庫密碼
include_once("class.php");//調用資料庫操作類
$access=new Access($databasepath,$dbusername,$dbpassword);//新建一個資料庫操作類的對象
?>
[/php]
[php]
<?php
$sql="select * from $info where id=$id";
$result=$access->query($sql)or die("error2");
$array=odbc_fetch_array($result);
?>
[/php]
333333333333
這個是為了 同時可以使用access和mysql而做的 先弄一個mysql的 然後又寫一個access的 所有的函數一一對應 你可以看下 絕對原創喔~~
配置文件如下
$config['db']['type'] = "Mysql"; //資料庫類型「Mysql」,「Access」
$config['db']['database']= "ourcms"; //資料庫(文件)名
$config['db']['host'] = ""; //資料庫主機
$config['db']['username']= "7king"; //資料庫連接用戶名
$config['db']['password']= "tingting"; //資料庫連接密碼
/*
$config['db']['type'] = "Access"; //資料庫類型「Mysql」,「Access」
$config['db']['database']= "ourcms.mdb";//資料庫(文件)名
$config['db']['host'] = "";
$config['db']['username']= "";
$config['db']['password']= "";
<?php
/**
* 2007.04 by zhaohe
*
* php連接access通用類
*
* 用法:
* 建立new Access類 => set_db設置數據路徑 => set_login 設置連接資料庫的用戶名和密碼
* => 通過set_conn 設置連接 =>
* {
get_result 獲取查詢執行結果; get_result_rows 獲取查詢執行列表,一般是select
insert_info 插入新的記錄 update_info更新記錄
}
*
*
*/
class Access {
/**
* 類變數定義
* @param $conn mysql連接號
* @param $error 錯誤代號
* @param $username/$password 資料庫連接用戶名和密碼
* @param array $err_info 錯誤信息
*
* @param $debuginfo 調試信息
* @param $table 當前操作數據表
*/
var $conn;
var $error;
var $database;
var $username = "";
var $password = "";
var $err_info = array(
0 => "沒有錯誤!",
1 => "資料庫連接失敗!",
2 => "sql執行出錯!"
);
var $debuginfo="";
var $table;
/**
* 默認構造方法
**/
function Access( $arr=null ){
if( is_array($arr) ) {
$this->set_login( $arr['host'] , $arr['username'] , $arr['password'] );
$this->set_db( $arr['database'] );
$this->set_conn();
}
}
/**
* 設置資料庫文件名
* @param string $dbfile
*
* return void
*/
function set_db ( $dbfile ){
$this->database = $dbfile;
}
/**
* 設置連接資料庫的用戶名和密碼
* @param string $user 用戶名
* @param string $pwd 密碼
*
* @return void
*/
function set_login ( $user , $pwd ){
$this->username=$user;
$this->password=$pwd;
}
/**
* 創建資料庫連接
* @param
* return void
*/
function set_conn ( ){
if($this->conn=odbc_connect("DRIVER=Microsoft Access Driver (*.mdb);DBQ=".realpath($this->database),$this->username,$this->password,SQL_CUR_USE_ODBC )) $this->error=0;
else $this->error=1;
}
/**
* 設置當前操作的數據表
* @param string $tb
*
* @return void
*/
function set_table( $tb ) {
$this->table = $tb;
}
/**
* 返回sql查詢結果
* @param string $sql sql語句
*
* @return #id
*/
function get_result( $sql ){
return odbc_do( $this->conn , $sql );
}
/**
* 獲取查詢的結果
* @param string $sql
*
* @return array 結果的二維數組
*/
function get_result_rows( $sql ){
$array = array() ;
$result = $this->get_result( $sql );
while( $row = odbc_fetch_array( $result ) )
$array[] = $row ;
return $array;
}
/**
* 獲取部分查詢結果
*
* @param Array 數組
* @return Array
*/
function get_query_result( $cols , $tb=null , $order=null , $limit=null , $start=0 ) {
if( empty($tb) ) $tb=$this->table;
else $this->table=$tb;
if( is_array($cols) ) $col="[".implode('],[',$cols)."]";
else $col = $cols;
if( empty($limit) )
$sql = "select $col from $tb";
else
$sql ="select top $limit $col from $tb";;
if( isset($order) ) $sql.=" order by $order";
return $this->get_result_rows($sql);
}
/**
* 執行資料庫插入操作
*
* @param $arr values列表,數組索引為數據表欄位
* @param $tb 操作數據表 如果為空則為設置的當前類的操作表
*/
function insert_info( $arr , $tb = "" ) {
$cols = array_keys( $arr );
$values = array_values( $arr );
if (empty($tb)) $tb = $this->tb;
/*
foreach( $arr as $key => $value ){
$cols[] = $key;
$values[] = $value;
}
*/
$sql = "insert into [$tb]([".implode("],[",$cols)."]) values('".implode("','",$values)."')";
//return $sql;
return $this->get_result( $sql );
}
/**
* 執行資料庫更新操作
*
* @param array $arr 要更新的欄位值 數組索引為表欄位名
* @param array $con 條件數組
* @param string $tb 要操作的數據表
*
*/
function update_info( $arr , $con , $tb = "" ) {
$cols = array();
$conditions = array();
if (empty( $tb )) $tb = $this->tb;
foreach( $arr as $key => $value ){
$cols[] = "[$key]='$value'";
}
foreach( $con as $key => $value ) {
//檢查數據類型
if( is_int($value) || is_float($value) )
$conditions[] = "[$key]=$value";
else
$conditions[] = "[$key]='$value'";
}
$sql = "update [$tb] set ".implode(",",$cols)." where ".implode(" and ",$conditions);
//return $sql;
return $this->get_result( $sql );
}
}
?>
mysql的類如下
class Mysql {
/**
* mysql連接執行類,將sql的執行實現資料庫無關性
*
*
*
*/
/**
* 類變數定義
* @param $conn mysql連接號
* @param $error 錯誤代號
* @param $username/$password 資料庫連接用戶名和密碼
* @param array $err_info 錯誤信息
*
* @param $debuginfo 調試信息
* @param $table 當前操作數據表
*/
var $conn;
var $error;
var $username = "";
var $password = "";
var $host;
var $database;
var $err_info = array(
0 => "沒有錯誤!",
1 => "資料庫連接失敗!",
2 => "sql執行出錯!"
);
var $debuginfo="";
var $table;
function Mysql( $arr=null ) {
if( is_array($arr) ) {//var_mp($arr);
$this->set_login( $arr['host'] , $arr['username'] , $arr['password'] );
$this->set_db( $arr['database'] );
$this->set_conn();
if( isset($this->error) && $this->error!=0 ) die($this->err_info[$this->error]);
}
}
/**
* 設置資料庫名
* @param string $database
*
* return void
*/
function set_db ( $dbfile ){
$this->database = $dbfile;
}
/**
* 設置連接資料庫的用戶名和密碼
* @param string $user 用戶名
* @param string $pwd 密碼
*
* @return void
*/
function set_login ( $host , $user , $pwd ){
$this->host=$host;
$this->username=$user;
$this->password=$pwd;
}
/**
* 創建資料庫連接
* @param
* return void
*/
function set_conn (){
$this->conn=mysql_connect($this->host,$this->username,$this->password );
if ( isset($this->conn) && mysql_select_db($this->database) )
$this->error=0;
else
$this->error=1;
}
/**
* 設置當前操作的數據表
* @param string $tb
*
* @return void
*/
function set_table( $tb ) {
$this->table = $tb;
}
/**
* 返回sql查詢結果
* @param string $sql sql語句
*
* @return #id
*/
function get_result( $sql ){
return mysql_query( $sql , $this->conn );
}
/**
* 獲取查詢的結果
* @param string $sql
*
* @return array 結果的二維數組
*/
function get_result_rows( $sql ){
$array = array() ;
$result = $this->get_result( $sql );
while( $row = mysql_fetch_assoc( $result ) )
$array[] = $row ;
return $array;
}
/**
* 獲取部分查詢結果
*
* @param Array 數組
* @return Array
*/
function get_query_result( $cols , $tb=null , $condition , $order=null , $limit=null , $start=0 ) {
if( empty($tb) ) $tb=$this->table;
else $this->table=$tb;
if( is_array($cols) ) $col="`".implode('`,`',$cols)."`";
else $col = $cols;
if( isset($limit) )
$sql.="select top $limit $col from $tb";
else
$sql = "select $col from $tb";
if( isset($condition) ) $sql.=" where $condition";
if( isset($order) ) $sql.=" order by $order";
if( isset($limit) ) $sql.=" limit $start,$limit";
return $this->get_result_rows($sql);
}
/**
* 執行資料庫插入操作
*
* @param $arr values列表,數組索引為數據表欄位
* @param $tb 操作數據表 如果為空則為設置的當前類的操作表
*/
function insert_info( $arr , $tb = "" ) {
$cols = array_keys( $arr );
$values = array_values( $arr );
if (empty($tb)) $tb = $this->table;
/*
foreach( $arr as $key => $value ){
$cols[] = $key;
$values[] = $value;
}
*/
$sql = "insert into [$tb](`".implode("`,`",$cols)."`) values('".implode("','",$values)."')";
//return $sql;
return $this->get_result( $sql );
}
/**
* 執行資料庫更新操作
*
* @param array $arr 要更新的欄位值 數組索引為表欄位名
* @param array $con 條件數組
* @param string $tb 要操作的數據表
*
*/
function update_info( $arr , $con , $tb = "" ) {
$cols = array();
$conditions = array();
if (empty( $tb )) $tb = $this->table;
if( is_array($arr) ) {
foreach( $arr as $key => $value ){
$cols[] = "`$key`='$value'";
}
foreach( $con as $key => $value ) {
//檢查數據類型
if( is_int($value) || is_float($value) )
$conditions[] = "`$key`=$value";
else
$conditions[] = "`$key`='$value'";
}
$sql = "update `$tb` set ".implode(",",$cols)." where ".implode(" and ",$conditions);
}
else
$sql = "update `$tb` set $arr where $con";
//return $sql;
return $this->get_result( $sql );
}
}
B. PHP簡單的操作Access資料庫
關於用PHP連接ACCESS資料庫的做法
用ASP和PHP的,一起做一個比較..
ASP程序
程序代碼 程序代碼
1.conn= "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" & Server.MapPath("*.mdb")
2.set conn = server.createobject("adodb.connection")
3.conn.open conn
4.set rs = Server.CreateObject("adodb.recordset")
5.sql = "select * from 表名"
6.rs.Open sql, conn, 3, 1
7.rs.Close
PHP程序
程序代碼 程序代碼
<?PHP
1.$conn = @new COM("ADODB.Connection") or die ("ADO連接失敗!");
2.$connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("temp/TempData.mdb");
3.$conn->Open($connstr);
4.$rs = @new COM("ADODB.RecordSet");
5.$sql ="select * from blog_Content";
6.$rs->Open($sql,$conn,1,3);
7.$rs->close();
?>
兩個程序都相對應....很好理解了吧.嘿....然後就是ASP和PHP操作記錄集了...有什麼不同,,看資料了事5~
php: $rs[name/index];
asp: rs(name/index);
php: $rs->Fields["name"]->Value / fields[index]->Value;
asp: rs.fields(index)/rs.field(name);
php中的方法和ASP中基本一致,只是寫法上不一樣,,注意:PHP區分大小寫,寫時後面一定要加;號
asp:
修改記錄集中的記錄
rs.AddNew 向記錄集中添加一條新記錄
rs.Delete 從記錄集中刪除一條記錄
rs.{fieldName/fieldIndex}=指定值;
rs.Update 保存對當前記錄所做的修改
CancelBatch 當記錄集處在批量更新模式時)取消一批更新
CancelUpdate 調用Update之前)取消對當前記錄所做的所有修改
UpdateBatch 當記錄集處於批量更新模式時)保存對一個或多個記錄的修改
遍歷記錄集
Move NumRecords 在記錄集中向前或向後移動指定數目的記錄數。
MoveFirst 移動到記錄集的第一條記錄
MoveNext 移動到記錄集的下一條記錄
MovePrevious 移動到記錄集中的上一條記錄
MoveLast 移動到記錄集的最後一條記錄
記錄集對象屬性
AbsolutePosition 用來設置或讀取當前記錄在記錄集中的位置順序號
BOF 標明當前位置在記錄集中的第一條記錄之前
EOF 標明當前位置在記錄集中的最後一條記錄之後
RecordCount 表示一個記錄集中的記錄總數
記錄集進行分頁
AbsolutePage 指定當前的頁
PagePount 返回記錄集中的邏輯頁數
PageSize 指定一個邏輯頁中的記錄個數,預設值是10
GetRows() 記錄取到數組
MaxRecords 記錄集的最大容量
本人註:在文章最後只給出了ASP的內容,沒有找到PHP的啊,還有我試驗了以上內容,可是發現那容輸出以後只是一個Object單詞,不知道為什麼,還希望高手不吝賜教!
C. php怎麼連接access資料庫
(1)創建系統數據源,用PHP提供的ODBC函數。
(2)使用PHP的ODBC函數,但不創建數據源。
PHP使用ODBC連接Access 資料庫的方法。用$connstr="DRIVER= Microsoft Access Driver (*.mdb)來設置數據驅動,函數realpath()用來取得資料庫的相對路徑。利用該方法連接Access資料庫主要應用到PHP的 odbc_connect()函數,該函數聲明如下:
以下為引用的內容:
resourse odbc_connect( string dsn, string user, string password [, int cursor_type])
dsn:系統dsn名稱
user:資料庫伺服器某用戶名。
password:資料庫伺服器某用戶密碼。
cursor_type:游標類型。
代碼如下:
以下為引用的內容:
$connstr="DRIVER=Microsoft Access Driver (*.mdb);
DBQ=".realpath("bookinfo.mdb");
$connid=odbc_connect($connstr,"","",SQL_CUR_USE_ODBC );
(3)使用微軟的ADODB資料庫驅動。
定義類COM來使用ADO方法操縱Access資料庫的。
該類詳細說明如下:
以下為引用的內容:
string com::com( string mole_name [, string server_name [, int codepage]])
mole_name:被請求組件的名字或class-id。
server_name:DCOM伺服器的名字。
Codepage:指定用於將PHP字元串轉換成UNICODE字元串的代碼頁,反之亦然。該參數的取值有CP_ACP、CP_MACCP、CP_OEMCP、CP_SYMBOL、CP_THREAD_ACP、CP_UTF7和CP_UTF8。
PHP利用com類並使用ADO方法訪問資料庫的代碼如下:
以下為引用的內容:
$conn = new com("ADODB.Connection");
$connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("bookinfo.mdb ");
$conn->Open($connstr);
D. php連接Access資料庫的三種方法
提供已知的幾種連接方式:
1.
$conn = new com("ADODB.Connection");
$connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("test.mdb");
$conn->Open($connstr);
2.
$conn=new com("ADODB.connection");
$connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=".realpath("test.mdb");
$conn->open($connstr);
3.
$connection = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=$mdbFilename", $user, $password);
E. php連接Access資料庫查詢報錯
試試我的代碼
<?PHP
/*
創建ADO連接
*/
$conn = @new COM("ADODB.Connection") or die ("ADO Connection faild.");
$connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("Database1.accdb");
$conn->Open($connstr);
/*
創建記錄集查詢
*/
$rs = @new COM("ADODB.RecordSet");
$rs->Open("select * from dbo_dirs",$conn,1,3);
/*
循環讀取數據
*/
while(!$rs->eof){
echo $rs->Fields["title"]->Value;
echo "<br/>";
$rs->Movenext(); //將記錄集指針下移
}
$rs->close();
?>
F. PHP使用pdo連接access資料庫並循環顯示數據操作示例
本文實例講述了PHP使用pdo連接access資料庫並循環顯示數據操作。分享給大家供大家參考,具體如下:
PDO連接與查詢:
try
{
$conn
=
new
PDO("odbc:driver={microsoft
access
driver
(*.mdb)};
dbq=".realpath("MyDatabase.mdb"))
or
die("鏈接錯誤!");
//echo
"鏈接成功!";
}
catch(PDOException
$e){
echo
$e->getMessage();
}
$sql
=
"select
*
from
users";
1.
foreach()方法
foreach
($conn->query($sql)
as
$row)
{
$row["UserID"];
$row["UserName"];
$row["UserPassword"];
}
2.
while()方法
$rs
=
$conn->query($sql);
$rs->setFetchMode(PDO::FETCH_NUM);
while($row=$rs->fetch()){
$row[0];
$row[1];
$row[2];
}
php使用PDO抽象層獲取查詢結果,主要有三種方式:
(1)PDO::query()查詢。
看下面這段php代碼:
<?php
//PDO::query()查詢
$res
=
$db->query('select
*
from
user');
$res->setFetchMode(PDO::FETCH_NUM);
//數字索引方式
while
($row
=
$res->fetch()){
print_r($row);
}
?>
(2)PDO->exec()處理sql
<?php
//PDO->exec()處理sql
$db->setAttribute(PDO::ATTR_ERRMODE,
PDO::ERRMODE_EXCEPTION);
$res
=
$db->exec("insert
into
user(id,name)
values('','php點點通')");
echo
$res;
?>
(3)PDO::prepare()預處理執行查詢
<?php
//PDO::prepare()預處理執行查詢
$res
=
$db->prepare("select
*
from
user");
$res->execute();
while
($row
=
$res->fetchAll())
{
print_r($row);
}
?>
setAttribute()
方法是設置屬性,常用參數如下:
PDO::CASE_LOWER
--
強制列名是小寫
PDO::CASE_NATURAL
--
列名按照原始的方式
PDO::CASE_UPPER
--
強制列名為大寫
setFetchMode方法來設置獲取結果集的返回值的類型,常用參數如下:
PDO::FETCH_ASSOC
--
關聯數組形式
PDO::FETCH_NUM
--
數字索引數組形式
PDO::FETCH_BOTH
--
兩者數組形式都有,這是默認的
PDO::FETCH_OBJ
--
按照對象的形式,類似於以前的
mysql_fetch_object()
對上面總結如下:
查詢操作主要是PDO::query()、PDO::exec()、PDO::prepare()。
PDO->query()
—
處理一條SQL語句,並返回一個「PDOStatement」
PDO->exec()
—
處理一條SQL語句,並返回所影響的條目數
PDO::prepare()主要是預處理操作,需要通過$rs->execute()來執行預處理裡面的SQL語句
最後介紹兩個常用的函數:
(1)fetchColumn()獲取指定記錄里一個欄位結果,默認是第一個欄位!
<?php
$res
=
$db->query('select
*
from
user');
//獲取指定記錄里第二個欄位結果
$col
=
$res->fetchColumn(1);
echo
$col;
?>
(2)fetchAll(),從一個結果集中獲取數據,然後存放在關聯數組中
<?php
$res
=
$db->query('select
*
from
user');
$res_arr
=$res->fetchAll();
print_r($res_arr);
?>
更多關於PHP相關內容感興趣的讀者可查看本站專題:《PHP基於pdo操作資料庫技巧總結》、《php+Oracle資料庫程序設計技巧總結》、《PHP+MongoDB資料庫操作技巧大全》、《php面向對象程序設計入門教程》、《php字元串(string)用法總結》、《php+mysql資料庫操作入門教程》及《php常見資料庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。
您可能感興趣的文章:PHP使用PDO連接ACCESS資料庫PHP資料庫鏈接類(PDO+Access)實例分享php中mysql連接方式PDO使用詳解關於php連接mssql:pdo
odbc
sql
serverPhp中用PDO查詢Mysql來避免SQL注入風險的方法php中在PDO中使用事務(Transaction)全新的PDO資料庫操作類php版(僅適用Mysql)php使用pdo連接並查詢sql資料庫的方法php使用pdo連接mssql
server資料庫實例PHP實現PDO的mysql資料庫操作類
G. php access 求一個最簡單的操作access的例子
這是我以前空間里寫的 你參考一下:
一般來說,在資料庫方面,php和mysql才是黃金搭檔,但有些時候尤其小規模數據存放在accesss中時,可能就需要連接一下了。前幾天,因為要給老師把一些圖片從access資料庫中提取出來生成文件,自己對vb之類有不太熟悉,就網路和查手冊用php解決了一下,現在把一些心得寫一下。
php連接access,用的是odbc相關函數。連接的代碼如下:
<?php
$connstr="DRIVER=Microsoft Access Driver (*.mdb);DBQ=".realpath("mydb.mdb");
$connid=odbc_connect($connstr,"","",SQL_CUR_USE_ODBC );
?>
如上就建立了一個連接,mydb.mdb就是你要連接的access資料庫,接下來就要執行sql查詢,跟mysql類似又有些不一樣。
$rs=odbc_do($connid,「sql查詢」);執行查詢並返回。
odbc_fetch_row($rs),與mysql有一點差別,odbc無需返回,只有執行odbc_do()之後,才可以利用odbc_result(),來獲得結果。
$f1=odbc_result($rs,n),用來獲得查詢結果,n從1開始取值,表示第幾個欄位,也可用欄位名稱代替。
基本的就這些了,更多的函數可以參考php手冊的odbc函數部分,根據mysql的類比就可以。
還有一點要說明的是,在php.ini有關於讀取odbc資料庫內容大小的限制,默認為4kb,若資料庫中有欄位大小超出就會出現內容不全,設置方法在php.ini中找到
odbc.defaultlrl,把它後邊的數值增大即可。
下面舉個例子:
在mydb.mdb中有個pic表,表中兩個欄位,一個是名稱,一個是picid,現要將其中picid不為空的記錄讀出並按格式寫入一個文本文檔,如下:
<?php
$connstr="DRIVER=Microsoft Access Driver (*.mdb);DBQ=".realpath("mydb.mdb");
$connid=odbc_connect($connstr,"","",SQL_CUR_USE_ODBC );
$query=odbc_do($connid,"select 名稱,PicID from pic where PicID<>''");
while(odbc_fetch_row($query))
{
$name = odbc_result($query,1);
$id=odbc_result($query,2);
$str=$name.'@'.$id.'^';
$fp=fopen("picid.txt","a");
fwrite($fp,$str);
fclose($fp);
}
?>
另:在access的sql查詢中,不等於只能用<>,而用!=會出現錯誤。跟很多odbc資料庫一樣,odbc_num_rows($rs)往往也會返回錯誤,不能正確執行,可用while($odbc_fetch_row($rs))想法實現。