データベース関連の問題
このセクションでは、PHP とデータベースの間の最も一般的な問題について説明します。現在市場にあるほぼすべてのデータベースを PHP で操作できると言っても過言ではありません。
1. PHP は Microsoft SQL Server を操作できると聞きました。どうすればよいですか?
2. PHP 4 にアップグレードしました。教えてください。 : 「警告: MySQL: ... に結果セットを保存できません。何が起こっていますか?
4. 共有 mysql サポートをインストールすると、libphp4.so がインストールされるとすぐに Apache がコアをダンプします。この問題は解決できますか? ?
5. 次のようなエラー メッセージが常に表示されるのはなぜですか: 「警告: 0 は行
1. PHP は Microsoft の SQL Server を実行できると聞きました。
Windows プラットフォームでは、付属のパッケージを使用するだけで済みます。 ODBC ドライバーで十分です。
Unix プラットフォームでは、Sybase-CT ドライバーを使用して Microsoft SQL Server を操作できます。これは、Sybase のプロトコル (少なくともほとんどの製品) には、他の Linux システム用の無料バージョンがあるためです。 Unix システムの場合は、Sybase に問い合わせて正しいライブラリ ファイルを入手する必要がある場合があります。
2. Microsoft Access データベースを操作できますか?
はい。 Windows 9x/Me または NT/2000 では、必要なツールがすべて揃っています。
Unix で PHP を実行していて、MS Access と通信したい場合は、ODBC および Microsoft の ODBC ドライバを使用できます。 Windows の場合は、Unix ODBC ドライバーが必要です。OpenLink ソフトウェアは、試用版 (期限切れではない) と商用版をダウンロードできます。
もう 1 つの方法は、SQL サーバーを使用することです。 Windows ODBC ドライバーを使用してデータを保存すると、Microsoft Access (ODBC) および PHP (組み込み SQL Server ドライバー) を使用してこのライブラリを操作できます。または、オペレーティング システム ファイルや dBase データベースなど、Access と PHP の両方で開くことができる別のファイル形式を使用します。 OpenLink ソフトウェアの Tim Hayes は、これについて次のように書いています: PHP を使用して直接操作できるデータベースのミドルウェアとして別のライブラリを使用するのは得策ではありません。
-- たとえば、OpenLink のドライバーを使用してください。ミドルウェア ライブラリが必要な場合は、OpenLink が NT、Linux、およびその他の UNIX プラットフォームで実行できる Virtuoso (仮想データベース エンジン) をリリースしました。
を参照してください。 Web サイトから無料でダウンロードできます。
もう 1 つの成功例は、Windows で Mysql を使用して (mysql ODBC 経由で) Access データベースを同期することです。
Mysql の手順に従って、最新バージョンは http://www.mysql.com/ から入手できます (最寄りのミラー ポイントから!)。Mysql データベースをセットアップする以外に特別な設定は必要ありません。ユーザーのホスト ドメインを「%」に設定し、サーバー名、データベース名などを確認する必要があります。
Mysql Web サイトで Mysql ODBC ドライバーを検索してください。最新バージョンは myodbc-2_50_19-win95.zip (NT) であるはずです。 。 Windows マシンにインストールします。ツールキットのツールを使用して、インストールが成功したかどうかをテストできます。
ODBC マネージャー (コントロール パネル) でユーザーとシステム DSN を作成します。 DSN 名を作成し、ホスト名、ユーザー名 (mysql)、パスワード、ポート番号、および最初のステップで設定したその他のデータを入力します。
Access を完全にインストールします。この手順では、少なくとも接続されたデータベース テーブルを管理するために必要なツール ドライバーをインストールできます。
ここで、最も興味深いことが起こります。新しい Access データベースを作成します。 テーブル内を右クリックして「テーブルのリンク」を選択するか、「ファイル」メニューで「外部データの取得」を選択し、次に「テーブルのリンク」を選択します。ダイアログ ボックスが開いたら、ファイルの種類を選択します: ODBC システムを選択します。 DSN、ステップ 3 で作成した DSN 名。次に、リンクするテーブルを選択します。 「OK」を押します。これで、MySQL マネージャーでこのテーブルを開いて、データの追加/編集/削除を行うことができます。また、クエリの作成、テーブルの MySQL へのインポート/エクスポート、フォームやレポートの作成なども行うことができます。
ヒントとコツ:
Access テーブルを作成し、MySQL にエクスポートしたり、リンクし直すことができます。
Access でテーブルを作成するときに、主キーを使用します。を設定する必要があります。 同様に、Mysql でアクセスに接続する場合も、主キーが必要です。
MySQL でテーブルを選択した場合は、Access でテーブルを再リンクする必要があります。>アドイン>リンク テーブル マネージャーに移動します。
3. PHP 4 にアップグレードすると、mysql が常に通知するようになります。私: 「警告: MySQL: ... で結果セットを保存できません。何が起こっていますか?
これらの問題のほとんどは、PHP 4 のコンパイル オプション '--with-mysql' が原因です。は示されていない。 このようにして、PHP は組み込みの MySQL ライブラリを使用し、システムが Apache モジュールとして PHP 3 を使用するか、別のバージョンの MySQL ドライバーを使用する auth-mysql を使用するため、2 つの異なるバージョンの MySQL が存在します。クライアントドライバーで競合が発生します。
PHP 4 を再コンパイルし、Mysql パス情報を追加し、'--with-mysql=/your/path/to/mysql' で通常はこの問題を解決します。
4. 共有 mysql サポートをインストールすると、libphp4.so がロードされるとすぐに Apache がコアをダンプします。
この問題は、Mysql が pthread を使用して接続されている場合に発生します。 lddを使用してください。 使用する場合は、MySQL tarball を取得して再コンパイルするか、ソース rpm からコンパイルして、関連ファイル内のスレッド クライアント コードを有効にするスイッチを削除します。上記の 2 つの方法でこのエラーを修正できない場合は、新しい Mysql をサポートするために新しい PHP ライブラリを再コンパイルします。
5. 次のエラー メッセージが常に表示されるのはなぜですか: 「警告: 0 はオンラインの MySQL 結果インデックスではありません」または「警告: 指定された引数はオンラインの有効な MySQL 結果リソースではありません。
使用されている結果セット変数の値は 0 です。0 は、クエリが何らかの理由で失敗したことを意味します。結果セットを取得する前に、送信されたクエリが失敗した理由を確認する必要があります。$result の正しい記述方法は次のとおりです。 = mysql_query( "SELECT * FROM tables_priv");
if (!$result) {
echo mysql_error();
exit;
}
or $result = mysql_query( "SELECT * FROM tables_priv")
または die("不正なクエリ: ".mysql_error());