ZendFrameworkでのMySQL接続

ZendFrameworkからMySQLにアクセスする問題は初心者を混乱させる可能性があります。エラーメッセージとドライバーの欠如は、Zendで使用されているテクノロジーと原則を理解できなかった場合、明らかにならないためです。



幸い、PHP言語は完全に文書化されており、答えを見つけることはそれほど難しくありません。 一見、ソリューションの説明だけで十分であるという事実にもかかわらず、私はむしろ、この種の問題を自分で解決する方法、つまり、エラーメッセージを読んだ瞬間から完全に機能するコードまでを説明したいと思います。



ツールキット:

-Windows XP Professional(SP2)

-ZendFramework-1.6

-PHPバージョン5.2.6

-サーバー:StpServer 1.0

-MySQL 5.0.51b





データベースを使用していくつかのコードまたはチュートリアルコードのコピーアンドペーストを作成した後、データベースの一部のデータがブラウザに表示されているページにアクセスしようとすると、次のようなエラーが表示されます。



致命的なエラー:T:\ home \ virtual \ zend \ library \ Zend \ Db \ Adapter \ Pdo \ Abstract.php:103 Stack trace:#0 T :\ home \ virtual \ zend \ library \ Zend \ Db \ Adapter \ Abstract.php(389):Zend_Db_Adapter_Pdo_Abstract-> _ connect()#1 ...





最初に思い浮かぶのは、問題の考えられる原因を探してphpinfo()ページを調べることです。



そこで、PDOセクションで、インストールされているPDOドライバーの1つがsqlite2であることがわかります。 この場合、MySQLを使用します。



注: PDO(PHP Data Objects)はPHP言語の拡張機能であり、PHPスクリプトからデータベースにアクセスするためのシンプルで便利なインターフェイスを開発者が使用できるようにします。



PDOはデータベースへの抽象アクセスを提供します。つまり、どのDBMSを使用しても問題ありません。いずれにしても、標準のPDOメソッドを使用してデータを受信し、データベースに書き込みます。



PDOはPHPバージョン5.1に含まれており、PHP 5.0のPECLから拡張機能として入手できます。 PDOはPHP 5カーネルの新しいOO機能を使用し、以前のバージョンのPHPでは機能しません。



ウィキペディア、無料​​の百科事典から





さて、これでPDOが何であり、実際に何が欠けているかがわかりました。 しかし、もちろん、サーバーアセンブリアドレスには自然な怒りがあります。



ただし、公式のPHPサイトによると、問題はSTPディストリビューションにはありません。



PHP 5.1リリースを実行している場合、PDOおよびPDO_SQLITEがディストリビューションに含まれています。 configureを実行すると自動的に有効になります。





mysqlのドライバーを見つけることは残っています。



同じ公式サイトによると、ファイルには次のように名前を付ける必要があります。



拡張機能= php_pdo.dll

拡張機能= php_pdo_firebird.dll

拡張機能= php_pdo_informix.dll

拡張機能= php_pdo_mssql.dll

拡張機能= php_pdo_mysql.dll

拡張機能= php_pdo_oci.dll

拡張機能= php_pdo_oci8.dll

拡張機能= php_pdo_odbc.dll

拡張機能= php_pdo_pgsql.dll

拡張機能= php_pdo_sqlite.dll





PDBとそのドライバーがPECLの一部としてCで記述されていることを以前に知っていたため、このコミュニティの公式Webサイトにアクセスする必要があります。 PHPサイトのアドレスにプレフィックスpeclを追加するだけです。



http://pecl.php.net/で 、PDOキーワードを「パッケージ」セクションの検索に追加します。



検索結果で、最も関連性の高いアイテムを選択し、必要なページで自分自身を見つけます。 次に、バージョンテーブルで最後の安定版リリースのバージョン番号をクリックし、開いたページでPDO_MYSQLリンクを探します。 明らかに、私たちは正しい軌道に乗っています。



ただし、急いで[最新のダウンロード]リンクをクリックしないでください。ライブラリの最新リリースを確実にダウンロードできますが、ソースでは...です。 はい、PECLページはとても巧妙に配置されています。



Windowsでバイナリにアクセスするには、Available Releasesのバージョンテーブルの最初のアイテム、今度は1.0.2をクリックする必要があります。



ここで、パッケージ情報パッケージの説明には、切望されているリンクがあります。

Windowsバイナリは、 http://pecl4win.php.net/ext.php/php_pdo_mysql.dllにあります。




必要です!



小さなファイルをロードした後、彼らは言うように、物事は帽子の中にあります。 PHPのPECLフォルダーにコピーする必要があります。 私の場合、これはT:\ usr \ local \ Php \ PECL \



最後の作業は、拡張機能セクションのphp.iniでアドオンを登録することです。 適切な場所を見つけるには、pdoという単語で検索を使用することをお勧めします。



結果は、他の拡張機能の中でも、このような行です。



;拡張子= php_msql.dll

拡張機能= php_mysql.dll

拡張機能= php_mysqli.dll

;拡張子= php_oci8.dll

;拡張子= php_openssl.dll

;拡張子= php_oracle.dll

;拡張子= php_pdf.dll

拡張機能= php_pdo.dll

拡張機能= php_pdo_mysql.dll

;拡張子= php_pgsql.dll

;拡張子= php_printer.dll





重要:extension = php_pdo.dllの後に登録する必要があります。PHPはこれらのモジュールを順番に読み込むため、PDOに関連付けられた2行の順序が混同されると、次のメッセージが表示されます。



警告!



PHPスタートアップ:動的ライブラリ '/usr/local/PHP/PECL\php_pdo_mysql.dll'をロードできません-指定されたモジュールが見つかりませんでした。





それがすべての知恵です。



サーバーの再起動に成功した後、ZendFrameworkでMySQLを使用できるようになりました。



それほど難しいとは思いませんが、一度座って推測するほど単純ではありません。 要するに、誰が知っていた-蹴らないように、誰が知らなかった-今、あなたは知っている!



All Articles