php連線Access資料庫錯誤及解決方法

2022-09-27 07:45:14 字數 4433 閱讀 8952

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...