GNU/Linux >> Linux の 問題 >  >> Linux

サンプル コードを使用して PHP から MySQL に接続する 3 つの方法

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

Linux
  1. コンピュータからリモートでMySQLデータベースに接続する方法

  2. MySQL接続方法

  3. コマンドラインから PHP コードを実行するにはどうすればよいですか?

  1. なぜSymfonyを使うのですか?開発者の観点から、SymfonyPHPフレームワークを使用するための6つの議論

  2. MySQLデータベースにリモートで接続する

  3. root パスワードを使用せずにコマンドラインから MySQL に接続しますか?

  1. ターミナルを使用してMacOSXからLinuxに接続する

  2. PuTTYを使用してWindowsからLinuxに接続する

  3. C サンプル コードで Libpcap を使用してパケット スニッフィングを実行する方法