ご利用前に必ずお読みください。
フォーラムTOP > Xfree(旧無料レンタルサーバー) > PDOを用いてデータベースにアクセスできない

PDOを用いてデータベースにアクセスできない

by データベースにアクセスできないさん (87e04ee1)
投稿数:0回
(ベストアンサー:0回)
2020/06/12 23:06
PDOクラスを用いてデータベースにアクセスしようとするとcould not find driverとのエラー表示が出力されます。
PHPのバージョンは7.1、mysqlのバージョンは5.0.95。PHP・MySQLサーバを使用しています。
ファイルマネージャーを開くと一番最初に開かれる最上位のディレクトリに配置されたファイル(以下F1)における、PDOクラスを用いたデータベースへのアクセスは成功しました(尚このアクセスに成功したデータベースと今回アクセスしようとして失敗したデータベースは名前が異なります)。

$XXX = new PDO(...);
//上記の部分においてエラーが表示されます。
...の部分はdefine関数を用いて定義された定数(以下DEF)を入力しています。
尚DEFを用いず、カッコ内に直接引数を書き込むと一応は上記の部分においてエラーを回避することが出来ます。
しかしその後executeにてエラーが発生します(正確にはexecute関数実行後に書かれたprint_r($rs->errorInfo())においてエラーが発生します。ここで$rsはexecuteの結果を格納する変数です。エラー文はUncaught Error: Call to a member function errorInfo() on boolean...)。
結局executeできない理由が不明であることから恐らくはnew PDOにおいて何らかの不具合が残ったままで進行しているためにこのような事象が発生しているのではないかと考えています(しかしexecuteの前のprepareにおいてもエラー検出文を書きましたが、ここには引っかかっていません...もうよくわかりません)。

ディレクトリが違うとエラーが表示されるのかと思いF2の配置をF1が配置されたディレクトリ(最上位のディレクトリ)に変えてみましたがエラー表示に変化はありません。
同様のエラーが出ている人(XFreeServer上で動かしているわけではないようです)曰く、PDOのドライバをインストールしなければいけないらしい(PHP7.1の場合はインストールしなくても良いのでは?そもそもXFreeServerにおいてインストールする方法を知らない)のですが、そもそも動いている場合もあるわけだし、何故動く場合と動かない場合があるのかよくわかりません。
どなたか原因の思い当たる方は教えていただきたいです。よろしくお願いします。
このトピックへの回答は締め切られました。
by .さん (4b9b203e)
投稿数:256回
(ベストアンサー:32回)
2020/06/13 07:08
> $XXX = new PDO(...);
> //上記の部分においてエラーが表示されます。
> ...の部分はdefine関数を用いて定義された定数(以下DEF)を入力しています。
> 尚DEFを用いず、カッコ内に直接引数を書き込むと一応は上記の部分においてエラーを回避することが出来ます。

であるなら、defineの使い方がおかしいのでは?


> しかしその後executeにてエラーが発生します(正確にはexecute関数実行後に書かれたprint_r($rs->errorInfo())においてエラーが発生します。ここで$rsはexecuteの結果を格納する変数です。エラー文はUncaught Error: Call to a member function errorInfo() on boolean...)。

エラーメッセージ「Call to a member function errorInfo() on boolean」を見れば原因は明白では?
この回答に返信する