MySQL データベースを最大限に活用するには、カスタム PHP プログラムから MySQL データベースに接続する方法を理解することが重要です。
このチュートリアルでは、PHP から MySQL データベースに接続する方法を説明する適切なサンプル PHP プログラムとともに、次の 3 つの方法について説明します。
- mysqli 拡張機能を使用して接続する (推奨)
- PDO を使用して接続する (推奨)
- 従来のレガシー mysql_ 関数を使用して接続する (非推奨)
このために、php-mysql パッケージをインストールする必要があります。
CentOS を含む RedHat ベースのディストリビューションでは、以下に示すように yum を使用して php-mysql をインストールします。
yum install php-mysql
システムに応じて、上記は次の依存関係をインストールまたは更新します:
php
php-cli
php-common
php-pdo
php-pgsql
インストールが完了すると、phpinfo ページに次のように mysql モジュールが表示されます。
以下のすべての例では、既存の MySQL データベースに接続します。 MySQL を初めて使用する場合は、ここから始めるのが良いでしょう:MySQL ビギナーズ ガイド
注:ここで説明することはすべて MySQL と同じなので、MariaDB でも機能します。
1. mysqli 拡張機能を使用して PHP から接続
mysqli は MySQL 改良の略です。
ほとんどのディストリビューション (CentOS など) では、php-mysqli は既に php-mysql パッケージの一部であることに注意してください。そのため、php-mysqli パッケージを検索して探す必要はありません。 php-mysql パッケージをインストールして、mysqli 拡張機能をシステムで動作させるだけです。
次の mysqli.php ファイルを Apache DocumentRoot の下に作成します:
<?php $conn = new mysqli("localhost", "root", "mySecretDBpass", "thegeekstuff"); if ($conn->connect_error) { die("ERROR: Unable to connect: " . $conn->connect_error); } echo 'Connected to the database.<br>'; $result = $conn->query("SELECT name FROM employee"); echo "Number of rows: $result->num_rows"; $result->close(); $conn->close(); ?>
上記では:
- mysqli – この関数は、mysqli 拡張機能を使用して新しい接続を開始します。この関数はこれらの 4 つの引数を取ります <オール>
- MySQL データベースが実行されているホスト名
- 接続する MySQL ユーザー名
- mysql ユーザーのパスワード
- 接続する MySQL データベース。
- クエリ関数 – これを使用して、MySQL クエリを指定します。この例では、従業員データベースから name 列を選択しています。
- 最後に、num_rows 変数を使用して選択された行数を結果に表示しています。上記のように、結果変数と接続変数の両方も閉じています。
上記の mysqli.php をブラウザから呼び出すと、次の出力が表示されます。これは、PHP が MySQL データベースに接続してデータを取得できたことを示しています。
Connected to the database. Number of rows: 6
注:リモートの MySQL データベースに接続しようとしている場合は、ホストが許可されていないというエラー メッセージを回避するために、これを行う必要がある場合があります:MySQL クライアントがリモート MySQL サーバーに接続できるようにする方法
2. PHP MySQL PDO 拡張機能から接続
PDO は PHP データ オブジェクトの略です。
PDO_MYSQL ドライブは、PHP プログラムから MySQL データベースに接続するために PHP によって提供される PDO インターフェースを実装します。
ほとんどの Linux ディストリビューション (CentOS や RedHat など) では、php-pdo パッケージは既に php-mysql パッケージの一部になっています。そのため、php-pdo パッケージを検索して探す必要はありません。 php-mysql パッケージをインストールして、システムで PDO_MYSQL PHP 拡張機能を動作させるだけです。
次の mysql-pdo.php ファイルを Apache DocumentRoot の下に作成します:
<?php try { $conn = new PDO("mysql:host=localhost;dbname=thegeekstuff", "root", "mySecretDBpass"); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo 'Connected to the database.<br>'; $sql = 'SELECT name FROM employee'; print "Employee Name:<br>"; foreach ($conn->query($sql) as $row) { print $row['name'] . "<br>"; } $conn = null; } catch(PDOException $err) { echo "ERROR: Unable to connect: " . $err->getMessage(); } ?>
上記では:
- 新しい PDO – 次の 3 つの引数を取る新しい PDO オブジェクトを作成します。 <オール>
- mysql 接続文字列:「mysql:host=$hostname;dbname=$dbname」の形式になります。上記の例では、db は localhost で実行されており、geekstuff データベースに接続しています。
- 接続する MySQL ユーザー名
- mysql ユーザーのパスワード
- $sql 変数 – 実行する SQL クエリを作成します。この例では、employee テーブルから name 列を選択しています。
- query($sql) – ここでは、作成したばかりの SQL クエリを実行しています。
- foreach – ここでは、上記のクエリ コマンドからの出力をループして $row 変数に格納し、次に print コマンドを使用して表示しています。
- MySQL PDO で接続を閉じるには、$conn 変数を null 値に設定するだけです。
上記の mysqli.php をブラウザから呼び出すと、次の出力が表示されます。これは、PHP が MySQL データベースに接続してデータを取得できたことを示しています。
Connected to the database. Employee Name: Thomas Jason Mayla Nisha Randy Ritu
3.従来の mysql_ 関数を使用して PHP から接続する (非推奨)
古いバージョンの PHP を使用していて、何らかの理由で新しいバージョンにアップグレードできない場合にのみ、この方法を使用してください。
この方法ではなく、上記の方法 2 と方法 3 を使用することをお勧めします。この方法は参照用にのみ記載しており、使用を推奨するものではありません。
この特定の拡張機能は、PHP 5.5 バージョンで非推奨になりました。しかし、PHP 7.0 バージョンからは削除されたため、これも機能しなくなりました。
PHP 5.5 バージョンから、これらの関数を使用すると、E_DEPRECATED エラーが発生します。
次の mysql-legacy.php ファイルを Apache DocumentRoot の下に作成します:
<?php $conn = mysql_connect('localhost', 'root', 'mySecretDBpass'); mysql_select_db("thegeekstuff"); if (!$conn) { die('ERROR: Unable to connect: ' . mysql_error()); } echo 'Connected to the database.<br>'; $result = mysql_query('SELECT name FROM employee'); $row = mysql_fetch_row($result); echo "Employee 1: ", $row[0], "<br>\n"; mysql_close($conn); ?>
上記では:
- mysql_connect 関数は 3 つの引数を取ります:1) MySQL データベースが実行されているホスト名 2) 接続する MySQL ユーザー名 3) mysql ユーザーのパスワード。ここでは、ユーザー名 root とそのパスワードを使用して、ローカル サーバーで実行されている MySQL データベースに接続しています。
- mysql_select_db 関数 – 名前が示すように、接続先のデータベースを選択します。これは「use」コマンドと同等です。この例では、データベース thegeekstuff に接続しています。
- mysql_query 関数 – これを使用して、MySQL クエリを指定します。この例では、従業員データベースから name 列を選択しています。
- mysql_fetch_row – この関数を使用して、作成したばかりの SQL クエリから行をフェッチします。
- 最後に、上記のように mysql_close コマンドを使用して接続を閉じます。
上記の mysql-legacy.php をブラウザから呼び出すと、次の出力が表示されます。これは、PHP が MySQL データベースに接続してデータを取得できたことを示しています。
Connected to the database. Employee 1: Thomas