php+access連線資料庫常用的方式一般有兩種.
推薦的**
需要注意php獲取路徑用的是realpath
複製** **如下:
<?php
$connstr="driver=; dbq=" . realpath("data.mdb");
$connid=odbc_connect($connstr,"","",sql_cur_use_odbc);
$issuetime=date("y-m-d h:i:s");
$sql="insert into test values("","",...)";
$result=odbc_exec($connid,$sql);
if($result) echo "successful";
else echo "failed";
?>
之二:
複製** **如下:
<?php
//建立ado連線
$conn = @new com("adodb.connection") or die ("ado連線失敗!");
$connstr = "driver=; dbq=" . realpath("temp/tempdata.mdb");
$conn->open($connstr);
//建立記錄集查詢
$rs = @new com("adodb.recordset");
$rs->open("select * from blog_content",$conn,1,3);
echo $rs->fields["log_title"]->value; //輸出log_title欄位
echo "
"; $rs->movenext(); //將記錄集指標下移
echo $rs->fields["log_title"]->value;
$rs->close();
?>
下面是補充
1.通過建立odbc驅動,再用php 的odbc_connect()函式連線.
如:複製** **如下:
$connstr=driver=; dbq=".$db;
$connid=odbc_connect($connstr,"username","password",sql_cur_use_odbc);
2.用oledb方式連線,再呼叫 open方法開啟
如: 複製** **如下:
$conn=new com("adodb.connection");
$connstr="provider=microsoft.jet.oledb.4.0;data source=".$db;
$conn->open($connstr);
但這二種方法怎麼連線都出錯,去網上找資料,有的說是沒有賦予everyone許可權,有的說是access97 和access2000的驅動不一樣(就是資料庫是2000建的,讀取用的驅動是97的.)造成的.
經過反覆測試原來是資料庫的路經造成的.以前在開發asp時習慣把資料庫的位址寫成相對路徑,再用server.mappath()函式獲取他的絕對路徑.
在開發php時也延續了這個習慣,用realpath加資料庫的相對路徑來獲取資料庫的位址.比如:$db=realpath("../db.mdb");
但asp 的include函式和php的include函式在處理包含檔案的方式似乎不同,造成了php在不同程式設計客棧目錄下包含conn.php檔案連線資料庫出現"常見錯誤 不能開啟登錄檔關鍵字",
或uncaught exc程式設計客棧eption 'com_exception' with message 'source: providerdescription: 驗證失敗。' 的錯誤.
現在把錯誤資訊及解決方法整理一下貼給大家,希望別的朋友遇到這種情況不用像我這樣鬱悶
錯誤1php連線access 資料庫常見問題
複製** **如下:
warning: odbc_connect() [
function.odbc-connect
]: sql error: [microsoft][odbc microsoft access driver]常見錯誤 不能開啟登錄檔關鍵字 'temporary (volatile) jet dsn for process 0xdd0 thread 0xcb8 dbc 0x14bd024 jet'。, sql state s1000 in sqlconnect in e:\wwwroot\phperz.com\phpweb\conn.php on line 8
出現這種錯誤證明你使用的是odbc的access驅動,就是上面說的第一種連線資料庫的方法$connstr=driver=; dbq=".$db;
並且你當前訪問的檔案和你的conn.php資料庫連線檔案不在同一目錄下,包含conn.php時用的相對路徑,比如 include("../conn.php"),由於php處理include函式裡的檔案和 asp的不同,
造成了資料庫路徑上的錯誤,
解決方法:
1,檢查你資料庫的路徑,是不是用realpath()函式加相對路徑來獲取的,
比如:$db=realpath("../db.mdb");
如果是,請換種方法獲取資料庫位址,比如用:$_server['document_root']來獲取你**的根目,再加資料庫的位址
rclvu例:$db=$_server['document_root']."\db.mdb";
2,檢查許可權,賦予他everyone許可權
3,換種連線方式,微軟的odbc驅動存在一些不穩定的bug,有可能導致此類錯誤,據說微軟本身已經放棄了對odbc資料來源連線方式的支援,並建議使用者使用oledb方式,應該將連線字串改為如下方式:
"provider=microsoft.jet.oledb.4.0;data source=".$db;
錯誤2:
fatal error: uncaught exception 'com_exception' with message 'source: prov程式設計客棧iderdescription: 驗證失敗。' in e:\wwwroot\phperz.com\phpweb\conn.php:7 stack trace: #0 e:\wwwroot\phperz.com\phpweb\conn.php(7): com->open('provider=micros...') #1 ...............
這種錯誤說明你用的是oledb的方式連線的資料庫,並且也是資料庫的路徑造成的.
解決方法同上,用$_server['document_root']."\db.mdb";方法獲取資料庫位址
錯誤3:
複製** **如下:
warning: odbc_connect() [
function.odbc-connect
]: sql error: [microsoft][odbc 驅動程式管理器] 未發現資料來源名稱並且未指定預設驅動程式, sql state im002 in sqlconnect in e:\wwwroot\phperz.com\phpweb\conn.php on line 8
odbc 驅動方式連線的資料庫,錯誤原因多半是你的連線字串寫錯了,完整的連線字串應該是:
複製** **如下:
$db=$_server['document_root']."\db.mdb";
$connstr="driver=;dbq=$db;uid=admin;pwd=pass";
$connid=odbc_connect($connstr,"admin","pass",sql_cur_use_odbc) or die("資料庫開啟失敗!請聯絡管理員");
如果你的資料庫沒有密碼以上uid和pwd可以省略
複製** **如下:
$connstr="driver=;dbq=$db";
$connid=odbc_connect($connstr,"","",sql_cur_use_odbc) or die("資料庫開啟失敗!請聯絡管理員");
錯誤4:
fatal error: uncaught exception 'com_exception' with message 'source: adodb.connectiondescription: 未找到提供程式。該程式可能未正確安裝。' in......................
oledb連線方式,錯誤原因同上,完整的連線字串應該是:
複製** **如下:
$db=$_server['document_root']."\db.mdb";
$conn=new com("adodb.connection");
$connstr="provider=microsoaft.jet.oledb.4.0;data source=".$db;
$conn->open($connstr);
本文標題: php連線access資料庫錯誤及解決方法
本文位址: /wangluo/php/97006.html
PHP連線ACCESS資料庫
在學習php的com 和 net windows 函式的時候,發現了乙個通過com操作sql server的例子,查詢了相關的資料,於是就有了這篇php連線access的文章,相信網上已經很多了,還是貼在這裡吧。我的機器環境 win2000,apache2,php version 5.1.0rc1 ...
php連線access資料庫
在一次access資料庫匯入到mysql資料庫的時候,怎麼也連線不上access,最後還是連線上了,看下面 原創文章,程式設計師人生 www.wfuyu.com 連線上之後,迴圈輸出來,然後update到mysql資料庫中,這樣就實現了access資料庫轉mysql資料庫 conn new com ...
連線ACCESS資料庫
1 匯入命名空間空間 system.data.oledb 2 建立指向資料庫的連線 建立連線要用到system.data.oledb命名空間中的類 oledbconnection。通過以下語句可以完成對本地資料庫的連線工作 string strconnect provider microsoft.j...