Access データベースへの PHP 接続のエラーと解決策_PHP チュートリアル

WBOY
リリース: 2016-07-21 15:04:52
オリジナル
895 人が閲覧しました

php+access を使用してデータベースに接続するには、一般的に 2 つの方法があります

推奨コード

php はパスを取得するために realpath を使用することに注意してください

コードをコピーします コードは次のとおりです。

$ connstr="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("data.mdb");
$connid=odbc_connect($connstr,"", "",SQL_CUR_USE_ODBC);
$issuetime =date("Y-m-d H:i:s");
$sql="テスト値に挿入("","",...)"; $connid,$sql);
if ($result) echo "成功";
else echo "失敗";> ADO 接続
$conn = @new COM("ADODB.Connection") または die ("ADO 接続")失敗しました!");
$connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" .realpath ("temp/TempData.mdb");
$conn->Open($connstr);

//レコードセットクエリを作成します
$rs = @new COM("ADODB.RecordSet")
$rs-> ;Open("select * from blog_Content",$conn,1,3); ->Fields["log_Title"]->Value; //log_Title フィールドを出力します
echo "
"; //レコードセットポインタを下に移動します
echo $rs->Fields["log_Title"]->Value ? 以下は補足です。 1. odbc ドライバーを作成し、PHP の odbc_connect() 関数を使用して接続します。

例:



コードをコピーします

コードは次のとおりです:


$connstr=DRIVER={DBQ=".$db;
$connid=odbc_connect ($connstr," ユーザー名","パスワード",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 ファイルをインクルードすると、「一般的なエラーでレジストリ キーワードを開けません」が発生します。

または、メッセージ「ソース: ProviderDescription: 認証に失敗しました。」を含むキャッチされない例外「com_Exception」。 ' エラー

ここでエラーメッセージと解決策を整理して、皆さんに投稿します。この状況に遭遇した他の友達が私のように落ち込まないことを願っていますエラー 1
php接続アクセスデータベースに関するよくある質問




コードをコピー
コードは次のとおりです:

警告: odbc_connect() [

function.odbc-connect

]: SQL エラー: [Microsoft][ODBC Microsoft Access Driver]共通エラー レジストリ キーワードを開けません「プロセス 0xdd0 スレッド 0xcb8 DBC 0x14bd024 Jet の一時的 (揮発性) Jet DSN」。 、E:wwwrootphperz.comphpwebconn.phpの8行目のSQLConnectのSQL状態S1000

このエラーが発生した場合は、上記のデータベースに接続する最初の方法である odbc アクセス ドライバーを使用していることがわかります $connstr=DRIVER={Microsoft Access Driver (*.mdb)}; db;

現在アクセスしているファイルは、conn.php データベース接続ファイルと同じディレクトリにありません。conn.php をインクルードするときに使用される相対パス (include("../conn.php") など) は、PHP が原因です。 include 関数を処理するファイルは、asp のファイルとは異なります

データベース パスでエラーが発生しました、

解決策:

1. データベースのパスが realpath() 関数と相対パスを使用して取得されたかどうかを確認します。

例: $db=realpath("../db.mdb");

その場合は、$_SERVER['DOCUMENT_ROOT'] などの別の方法を使用してデータベース アドレスを取得してください。ウェブサイトにアクセスし、データベースアドレスを追加します

例: $db=$_SERVER['DOCUMENT_ROOT']."db.mdb";


2、権限を確認し、全員に権限を与えます

3. 接続方法を変更する Microsoft の odbc ドライバーには不安定なバグがあり、このようなエラーが発生する可能性があるため、Microsoft 自体が odbc データ ソース接続方法のサポートを放棄し、oledb 方法を使用することを推奨していると言われています。接続文字列を次のように変更します:

"プロバイダー=Microsoft.Jet.OLEDB.4.0;データ ソース=".$db;

エラー 2:

致命的エラー: キャッチされない例外 'com_Exception' とメッセージ 'ソース: ProviderDescription: 認証に失敗しました。 ' in E:wwwrootphperz.comphpwebconn.php:7 スタック トレース: #0 E:wwwrootphperz.comphpwebconn.php(7): com->Open('Provider=Micros...') #1 ...... ……

このエラーは、データベースへの接続に oledb を使用していることを意味し、データベースのパスによっても発生します。

解決策は上記と同じで、$_SERVER['DOCUMENT_ROOT']."db.mdb" メソッドを使用してデータベースアドレスを取得します

;

エラー 3:

コードをコピー コードは次のとおりです:
警告: odbc_connect() [
function.odbc-connect
]: SQL エラー: [Microsoft][ODBC Driver Manager] データ ソース名が見つかりません。 E:wwwrootphperz.comphpwebconn.php の 8 行目で、SQLConnect のデフォルト ドライバー、SQL 状態 IM002 を指定しました

odbc ドライバー経由で接続されたデータベースの場合、エラーは接続文字列が正しく書かれていないことが原因である可能性が高く、完全な接続文字列は次のようになります。

コードをコピーします コードは次のとおりです:
$db=$_SERVER['DOCUMENT_ROOT']."db.mdb";
$connstr="Driver={Microsoft Access Driver (*.mdb) )};Dbq =$db;Uid=Admin;Pwd=pass";
$connid=odbc_connect($connstr,"admin","pass",SQL_CUR_USE_ODBC) または die("データベースを開けませんでした!管理者に問い合わせてください");


データベースにパスワードがない場合、上記の Uid と Pwd は省略できます

コードをコピーします コードは次のとおりです:
$connstr="Driver={Microsoft Access Driver (*.mdb)};Dbq=$db";
$connid=odbc_connect($connstr, ""," ",SQL_CUR_USE_ODBC) または die("データベースを開けませんでした! 管理者に連絡してください");


エラー 4:致命的なエラー: キャッチされない例外 'com_Exception' とメッセージ 'ソース: ADODB.ConnectionDescription: プロバイダーが見つかりません。プログラムが正しくインストールされていない可能性があります。 '....................


oledb 接続メソッドで、エラーの理由は上記と同じです。完全な接続文字列は次のようになります:

コードをコピーします コードは次のとおりです:
$db=$_SERVER['DOCUMENT_ROOT']."db.mdb";
$conn=new com("ADODB.connection");
$connstr=" Provider=Microsoaft.Jet.OLEDB.4.0;データ ソース=".$db;
$conn->Open($connstr);


http://www.bkjia.com/PHPjc/327736.html

tru​​ehttp://www.bkjia.com/PHPjc/327736.html技術記事 php+access がデータベースに接続するには、通常 2 つの一般的な方法があります。推奨されるコードでは、php は次のように realpath を使用してコードをコピーします。 ..
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート