Junkieホーム入門PHPからMySQLに接続するための最適な方法2020/02/06SHAREツイートシェアはてブGoogle+PocketLINEこんにちはー!むちょこです。今回は、「MySQLって何?」というところからPHPに接続するためのベストプラクティスを見つける比較材料をご紹介します。目次MySQLとはPHPからMySQLへ接続するための2つの方法mysqliの使い方PDO_MySQLの使い方MySQLとはMySQLは関係データベース管理システム(RDBMS)の1種で、PHPからデータを扱うときに最もよく選択されるDBの1つです。MySQLに保存されたデータは、MySQLサーバにアクセスしSQL文を実行することで閲覧・操作することができます。MEMOMySQLのSQL文について学びたい方は、よかったらこちらをご覧ください。https://note.com/muchoco/m/me63e16bd3c3aMySQLへのアクセスやSQL文の実行は、コマンドラインから手動で行うことも可能ですし、PHP等のプログラミング言語から行うことも可能です。ここではもちろんPHPからの接続・操作方法をご紹介します。最新のPHPでは、MySQLへ接続するための選択肢が2つあります。mysqliとPDO_MySQLです。mysqlimysqliは、PHPからMySQLを操作するための多くの機能を備えた拡張モジュールです。手続き型かオブジェクト指向を選択することができるのが大きな特徴の1つです。基本的にはオブジェクト指向を選択するのがモダンなやり方ですが、古いmyql関数から移行する場合など、状況によっては手続き型の方が便利なときもあります。PDO_MySQLPDOは、PHPからDBを操作するためのインターフェイスです。PDO_MySQLは、そのPDOインターフェイスを実装したMySQL用のドライバです。MySQL以外のDBドライバもあるため、DBに囚われずシステムを設計・実装することができます。mysqliとPDO_MySQLの違いPHPの公式マニュアルでは、mysqliとPDO_MySQLには全体的なパフォーマンスの違いはほとんどないと記されています。全体的なパフォーマンスは、どれもほぼ同じです。https://www.php.net/manual/ja/mysqlinfo.api.choosing.phpしかし機能にはいくつか違いあります。公式マニュアルから抜粋してみましたのでご覧ください。ほとんど対応この表だけだとわかりづらいかもしれないので、少しずつ補足していきます。手続き型のインターフェイスmysqliの項目でも少しご紹介しましたが、mysqliではオブジェクト指向だけでなく手続き型のインターフェイスも利用することができます。上記のコードは、公式マニュアルから引用しています。よるノンブロッキングな非同期クエリノンブロッキングとは、入出力処理がすぐできない状態のときは待たずにreturnされる仕組みです。非同期とは、他の処理のタイミングに関わらず行われる処理のことです。mysqliにはMYSQLI_ASYNCオプションやmysqli_poll()関数など、mysqlnd上で利用できるノンブロッキング・非同期機能が備わっています。クライアントサイドのプリペアドステートメントPDO_MySQLでは、サーバサイドのプリペアドステートメント(静的プレースホルダ)だけでなく、クライアントサイドのプリペアドステートメント(動的プレースホルダ)も利用可能です。PDO::ATTR_EMULATE_PREPARES属性の値がtrueならクライアントサイド、falseならサーバサイドのプリペアドステートメントが有効になります。どちらがデフォルトになっているかはPHPのバージョンによって異なるため、常に明示するようにすると安心です。false);複数ステートメントmysqliでは、mysqli::multi_query()またはmysqli_multi_query()を使うことで複数のステートメントを一度に送信することができます。users;");PDO_MySQLの場合は、PDO::ATTR_EMULATE_PREPARES属性の値をtrueにするとquery()やprepare()、execute()で複数クエリを一度に送信することができます。初心者歓迎の優しいサロンです。公式サイトを見てみるPHPはサーバサイドスクリプト!クライアントサイドスクリプトとの違いとは?PHP初心者の方にオススメの勉強方法[前編]PHP初心者の方にオススメの勉強方法[後編]PHP初心者の方に知ってほしい5つのこと前の記事Laravelのルーティングはどのファイルに書くべきか次の記事CircleCI対応のLaravel開発環境を作る方法むちょことことん自由に働くwebエンジニア。フルリモート専門で10年くらいやってます。web系フリーランス集団«ラシュリエLLP»代表。https://lachelier.com/#contact\Twitterやってます/PHP以外の記事はこちら0からのweb開発手順はじめてのMySQL運営サービスcommew現役フリーランスやフリーランスを目指す方のためのオンラインサロンです。