質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.98%

PHPからMySQLのバージョンを確認する方法はありますか?

解決済

回答 5

投稿

  • 評価 -7
  • クリップ 1
  • VIEW 482

phpman

score -10

PHPで、MySQLサーバーのバージョンに応じて、クエリーの組み立てを変えたいと思っていますが、PHPからMySQLサーバーのバージョンを確認する方法はありますでしょうか?

例えば、アプリケーション・サーバーとデータベース・サーバーが別れていた場合でも確認できる方法を探しています。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    上記に当てはまらず、質問内容が明確になっていない質問には「」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

回答 5

+5

滅茶苦茶悪手だと思います。
それなら「どちらでも通るSQL」で組むか、DBの種類やバージョンを意識せずに済む仕組み(フレームワークなど)を利用するべきです。

投稿

m.ts10806

score 52096

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • phpman

    phpman

    2020/09/02 20:16

    te2ji:https://teratail.com/users/te2ji#reply

    > ずいぶん「ホシイホシイ」言いますね。
    > そうすれば、私も回答を作成します!

    回答はいらないです。過去の発言を引用して下さい。

  • te2ji

    te2ji

    2020/09/02 20:22

    いやですよ。なんで phpman さんにそんなこと指示されなきゃいけないんですか^^;

    まぁ、うざいでしょうから、もう書き込みません。
    ご愁傷さまです。

  • phpman

    phpman

    2020/09/02 20:29

    te2ji:https://teratail.com/users/te2ji#reply

    > まぁ、うざいでしょうから、

    はい。うざいです。

    > もう書き込みません。

    逃げるんですね。わかります。

    > ご愁傷さまです。

    これって煽りですよね?

    あなたのQiitaの記事を拝見しましたが、まぁまぁレベル低いですよ。

checkベストアンサー

+2

select version();


を発行して結果を表示する

投稿

yambejp

ユーザーランキング総合2位

score 70992

    • 回答の評価を上げる

      以下のような回答は評価を上げましょう

      評価が高い回答ほどページの上位に表示されます。

    • 回答の評価を下げる

      下記のような回答は推奨されていません。

      評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

    • phpman

      phpman

      2020/08/26 16:45

      ありがとうございます。取得できました。

    +2

    SQLとしては

    select version();


    を実行します。
    このSELECT文をPHPに組み込みます。

    投稿

    Orlofsky

    Oracle総合1位

    score 12640

      • 回答の評価を上げる

        以下のような回答は評価を上げましょう

        評価が高い回答ほどページの上位に表示されます。

      • 回答の評価を下げる

        下記のような回答は推奨されていません。

        評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

      • phpman

        phpman

        2020/08/26 16:46

        ありがとうございます。取得できました。
        ベストアンサーは、同じ内容だったのですが、時間差で少し早く回答して頂けた方にしました。

      +2

      mysqliを使用しているのであれば、mysqli::$server_infoで取得できるようです。文字列として取得できるので、SQL発行するよりは簡単だと思われます。PDOの場合は見つかりませんでした。

      PHPでMySQLにSQLを直接発行する(所謂ORM等を使わない)プログラムを作成した実務経験は全くないので、間違っていたらすいません。PHPはあまり知らないのだけど、頑張って調べて書いてみました。

      投稿

      編集

      raccy

      score 20314

      • 回答の評価を上げる

        以下のような回答は評価を上げましょう

        評価が高い回答ほどページの上位に表示されます。

      • 回答の評価を下げる

        下記のような回答は推奨されていません。

        評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

      • phpman

        phpman

        2020/08/29 22:01

        有益な情報ありがとうございます!

      +2

      MySQLのバージョン違いがシステム内に二つあるのはいいとしても、
      MySQLサーバーが二つあるなら、接続情報も二つ。
      select version() を発行するんだとしても、接続情報どちらかしかそれを実行できない。

      select version() で分岐するより前の接続情報で分岐できる。

      バージョンで分岐するというのが愚策だと言われる理由。

      投稿

      phper.k

      score 633

      • 回答の評価を上げる

        以下のような回答は評価を上げましょう

        評価が高い回答ほどページの上位に表示されます。

      • 回答の評価を下げる

        下記のような回答は推奨されていません。

        評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

      • phper.k

        phper.k

        2020/09/02 19:30

        適当な質問文で要件は満たすというあなたの思い込みこそ、妄想だと思いますよ。

      • phpman

        phpman

        2020/09/02 19:33

        ベストアンサーをご覧ください。

      • phper.k

        phper.k

        2020/09/02 19:41

      15分調べてもわからないことは、teratailで質問しよう!

      • ただいまの回答率 88.98%
      • 質問をまとめることで、思考を整理して素早く解決
      • テンプレート機能で、簡単に質問をまとめられる

      関連した質問

      同じタグがついた質問を見る