Atsulabo
@Atsulabo (アツ)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

PEAR MDB2に接続したい

解決したいこと

タイトルそのままです。
PDOのほうがいいよ、というのはわかってます。
あえて、MDB2の方に挑戦しています。
大変申し訳ありませんが、皆さんのお力をお借りしたいです。

現在
Mac Catalina
MAMP 6.3(1040)
MYSQL 5.7.32
MDB2 2.5.0b5
MDB2ドライバーインストール済 

(ただし、PEAR INSTALLではできなかったので、仕方なくDLして
pear install --nodeps MDB2_Driver_mysql-1.5.0b4.tgzでインストール)
→これが怪しいなと思うのですが、PEAR INSTALLでは
pear/MDB2_Driver_mysql requires PHP extension "mysql"
のエラーが出てしまい、yumがインストール出来ないのでやむを得ずこの形にしています

PEAR LISTの結果は下記の通り

=========================================
Package           Version State
MDB2              2.5.0b5 beta
MDB2_Driver_mysql 1.5.0b4 beta
PEAR              1.10.12 stable
=========================================

下のコードで接続テストをしました

testdb.php

<?php
require 'mdb2.php';  # MDB2を使うための宣言

# DNSは(使用するDB名)://(ユーザ名):(パスワード)@(接続ホスト名)/(DB名)
$dns = 'mysql://root:(パスワード)@localhost/testMDB2';
$db = MDB2::connect($dns);  # DBへの接続
if(PEAR::isError($db)) { die("接続失敗" . $db->getMessage()); }  # DBの接続に失敗した時の処理

※上の(パスワード)はもちろんmySQLに設定したものを入れています

### 発生している問題・エラー
接続失敗MDB2 Error: not found

文字通り、接続に失敗しているということになります

エラーログは下記が出てました。
でも該当のところを見てもよくわからず。。
なんらかわかるところがありましたらご教授ください。。。

php.error.log
PHP Warning:  count(): Parameter must be an array or an object that implements Countable in /Applications/MAMP/bin/php/php7.4.12/lib/php/mdb2.php on line 826
[04-Jun-2021 15:41:53 UTC] PHP Stack trace:
[04-Jun-2021 15:41:53 UTC] PHP   1. {main}() /Applications/MAMP/htdocs/testdb.php:0
[04-Jun-2021 15:41:53 UTC] PHP   2. MDB2::connect() /Applications/MAMP/htdocs/testdb.php:7
[04-Jun-2021 15:41:53 UTC] PHP   3. MDB2::factory() /Applications/MAMP/bin/php/php7.4.12/lib/php/mdb2.php:417
[04-Jun-2021 15:41:53 UTC] PHP   4. MDB2::parseDSN() /Applications/MAMP/bin/php/php7.4.12/lib/php/mdb2.php:371

自分で試したこと

※このコードをテストする前にターミナルでユーザーとパスワードが正しいのは確認済
※Databaseは「testMDB2」,その中のテーブルには「users」があるのも確認済

0

2Answer

MDB2内部で発生しているので、環境の問題かもしれません。

MDB2の「Dependencies for MDB2」を見るとPHP 5.2.0となっています。
使用しているPHPのバージョンはいくつでしょうか?

MDB2 2.5.0b5は2012-10-29リリースとなっていて、かなり古いです。(しかもベータ版)
MySQL 5.7がリリースされたのが2013年のようなので、MDB2 2.5.0b5がリリースされた時点では存在していなかったことになります。
MySQL 5.7 Release Notes

ですので、使用しているPHPやMySQLなどが対応していない、ということも考えられます。

0Like

@blue32aさん

ありがとうございます!お察しの通り、phpは7.4になってました。
確かに古いものは古いのに合わせないと動かないですもんね。。。当たり前ですけど気づかず、勉強になりました。

勉強のために入れようとしてるので、phpとMySQLバージョン違いをインストールして、切り替えを今夜やってみようと思います。
なかなか難しそうですが。。。(−_−;)

できたらまたここで追記させていただきます。

0Like

Comments

  1. @Atsulabo

    Questioner

    残念ながら切り替えに格闘する時間がなく、この場では断念することにします(;・∀・)

    一応やったこと
    (1) MAMP に一応PHP5.6が残っていたので、5.2にする前に切り替えてみることにした
    (2) 切り替えはMAMP上でできた(フォルダリネームなどで)
    (3)しかしMDB2はそもそもPHP7.4の方に入っていたので、コピーして5.6の方に入れてみた
         これだと失敗するので、コマンドの方で入れるべきかと思った。
    (4)MAMP上では5.6だけど、コマンドライン上ではPHP7.4のままなのでblew系のコマンドを使っても7.4の方を認識してしまう
    (5)ここの切替方法を探しているがなかなか見つからず時間的にもあれなので一旦断念。(←いまここ) 

    ひとまず月末の試験終わって時間があったらやってみることにします。。。

Your answer might help someone💌