ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP チュートリアルを使用して Access データベースに接続するときの一般的なエラーと解決策

PHP_PHP チュートリアルを使用して Access データベースに接続するときの一般的なエラーと解決策

WBOY
WBOYオリジナル
2016-07-21 14:53:351073ブラウズ

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

1. odbc ドライバーを作成し、PHP の odbc_connect() 関数を使用して接続します

クリップボードにコピーLiehuo.Net Codes引用コンテンツ: [www.bkjia.com] 例: $connstr=DRIVER={Microsoft Access Driver (*.mdb)} DBQ=".$db;
$connid=odbc_connect($connstr,"username","password",SQL_CUR_USE_ODBC);

2. oledb を使用して接続し、open メソッドを呼び出して開きます
例:

クリップボードにコピーLiehuo.Net Codes引用コンテンツ: [www.bkjia.com] $conn=new com("ADODB.connection");
$connstr="Provider=Microsoft.Jet.OLEDB.4.0;データ ソース=".$db;
しかし、どの方法で接続してもエラーが発生します。 ネットで情報を調べてみると、Everyone の権限が付与されていないという意見や、access97 と access2000 のドライバが異なるという意見もありました。データベースは 2000 年に構築され、読み取りに使用されたドライバーは 97 でした。) が原因でした。

テストを繰り返した結果、データベースのパスが原因であることが判明しました。ASP を開発するとき、データベースのアドレスを相対パスとして記述し、server.mappath() 関数を使用してその絶対パスを取得していました。

これは、PHP の開発時にも継続されました。例: $db=realpath("../db.mdb"); のように、データベースの相対パスを加えたものを使用します。
ただし、asp の include 関数と php の include 関数は、インクルードされたファイルの処理方法が異なるようで、php がデータベースに接続するために異なるディレクトリに conn.php ファイルをインクルードすると、「一般的なエラーでレジストリ キーワードを開けません」が発生します。

またはメッセージ「ソース:プロバイダ
説明:」を含むキャッチされない例外。 ' エラー。

今度はエラー情報と解決策を整理して、この状況に遭遇した他の友人が私のように落ち込まないことを願っています。

php接続アクセスデータベースFAQ
エラー1:


クリップボードにコピー

引用コンテンツ: [www.bkjia.com] 警告: odbc_connect() [function.odbc-connect]: SQL エラー: [Microsoft][ODBC Microsoft Access Driver]一般的なエラー レジストリ キーワード「プロセス 0xdd0 スレッド 0xcb8 DBC 0x14bd024 Jet の一時 (揮発性) Jet DSN」を開けません。 、E:wwwroot\phpwebconn.php の 8 行目の SQLConnect の SQL 状態 S1000 Liehuo.Net Codesこのエラーが発生した場合は、上記のデータベースに接続する最初の方法である odbc アクセス ドライバーを使用していることがわかります $connstr=DRIVER={Microsoft Access Driver (*.mdb)}; db; そして、現在アクセスしているファイルは conn.php データベース接続ファイルと同じディレクトリにありません。 PHP はファイルと ASP の違いを処理するため、

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

解決策:

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

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

その場合は、$_SERVER['DOCUMENT_ROOT'] を使用して Web サイトのルートを取得し、データベース アドレスを追加するなど、別の方法を使用してデータベース アドレスを取得してください。
例:$db=$_SERVER['DOCUMENT_ROOT']."db.mdb";

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

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

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=".​​$db;

エラー 2:

クリップボードにコピーLiehuo.Net Codes引用コンテンツ: [www.bkjia.com] 致命的なエラー: メッセージ「ソース:プロバイダ
説明:」を含む例外がキャッチされませんでした。 ' in E:wwwroot\phpwebconn.php:7 スタック トレース: #0 E:wwwroot\phpwebconn.php(7): com->Open('Provider=Micros...') #1 ...... ……

このエラーは、データベースへの接続に oledb を使用していることを示しており、データベースのパスによっても発生します。
解決策は上記と同じで、$_SERVER['DOCUMENT_ROOT']."db.mdb を使用します。 "; データベースアドレスを取得するメソッド

エラー 3:

クリップボードにコピーLiehuo.Net Codes引用コンテンツ: [www.bkjia.com] 警告: odbc_connect() [function.odbc-connect]: SQL エラー: [Microsoft][ODBC Driver Manager] データ ソース名が見つからず、デフォルトのドライバーが指定されていません。E:wwwroot\phpwebconn php オンラインの SQLConnect で SQL 状態 IM002 です。 8

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

クリップボードにコピー引用コンテンツ: Liehuo.Net Codes[www.bkjia.com] $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 は省略できます

クリップボードにコピー

引用コンテンツ: [www.bkjia.com] $connstr="Driver={Microsoft Access Driver (*.mdb)};Dbq=$db"; Liehuo.Net Codes$connid=odbc_connect($connstr,"","",SQL_CUR_USE_ODBC) または die("データベースを開けませんでした。お問い合わせください。管理者"); エラー 4:

クリップボードにコピー

引用コンテンツ: [www.bkjia.com] 致命的なエラー: キャッチされない例外 'com_Exception' メッセージ 'Source: ADODB.Connection
プロバイダが見つかりません。プログラムが正しくインストールされていない可能性があります。 'で...................... Liehuo.Net Codesoledb 接続方法、エラーの理由は上記と同じで、完全な接続文字列は次のようになります:

クリップボードにコピー

引用コンテンツ: [www.bkjia.com] $db=$_SERVER['DOCUMENT_ROOT']."db.mdb"; Liehuo.Net Codes$conn=new com("ADODB.connection"); $connstr="Provider=Microsoaft.Jet.OLEDB.4.0;データ ソース=" .$db; $conn->Open($connstr);

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/364756.html技術記事 php+access がデータベースに接続するには、通常 2 つの一般的な方法があります。 1. odbc ドライバーを確立し、次に php の odbc_connect() 関数を使用して接続します。 引用されたコンテンツ: [www.veryhuo.com] など。 ...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。