English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
このチュートリアルでは、PHPでMySQLサーバーに接続する方法を学びます。
MySQLデータベース内のデータを保存またはアクセスするために、まずMySQLデータベースサーバーに接続する必要があります。PHPはMySQLサーバーに接続するための2つの異なる方法を提供しています:MySQLi(改良版MySQL)およびPDO(PHPデータオブジェクト)拡張。
PDO拡張名はより高い移植性を持ち、12以上の異なるデータベースをサポートしていますが、名前からも分かるようにMySQLi拡張名はMySQLデータベースのみをサポートしています。しかし、MySQLi拡張名はMySQLデータベースサーバーに接続し、その中でクエリを実行する簡単な方法を提供しています。PDOとMySQLiはともにオブジェクト指向のAPIを提供していますが、MySQLiはプロセスAPIも提供しており、初心者にとって比較的簡単に理解できます。
ヒント:PDO拡張と比較して、PHPのMySQLi拡張は速度と機能の利点も提供しているため、特定のMySQLプロジェクトにはより良い選択肢になるかもしれません。
PHPでは、mysqli_connect()関数を使用してこの操作を簡単に実行できます。PHPとMySQLデータベースサーバー間のすべての通信はこの接続を通じて行われます。以下は、MySQLiとPDO拡張を使用してMySQLに接続する3つの基本的な構文です:
$link = mysqli_connect("hostname", "username", "password", "database");
$mysqli = new mysqli("hostname", "username", "password", "database");
$pdo = new PDO("mysql:host=hostname;dbname=database", "username", "password");
上記の構文のhostnameパラメータは、ホスト名(例:localhost)またはMySQLサーバーのIPアドレスを指定し、usernameおよびpasswordパラメータはMySQLサーバーへのアクセス情報を指定します。また、データベースパラメータ(提供されている場合)は、デフォルトでMySQLでクエリを実行するデータベースを指定します。
以下の例では、MySQLi(プログラムおよびオブジェクト指向の)およびPDO拡張でMySQLデータベースサーバーに接続する方法です。
<?php /* MySQLサーバー接続を試みます。MySQLが動作していることを仮定しています。 デフォルト設定のサーバー(パスワードのないユーザー「root」) */ $link = mysqli_connect("localhost", "root", "); // 接続を確認する if($link === false){ die("エラー:接続できません。" . mysqli_connect_error()); } //ホスト情報を出力する echo "接続成功。ホスト情報:" . mysqli_get_host_info($link); ?>
<?php /* MySQLサーバー接続を試みます。MySQLが動作していることを仮定しています。 デフォルト設定のサーバー(パスワードのないユーザー「root」) */ $mysqli = new mysqli("localhost", "root", "", "demo"); // 接続を確認する if($mysqli === false){ die("エラー:接続できません。" . $mysqli->connect_error; } //ホスト情報を出力する echo "接続成功。ホスト情報:", $mysqli->host_info; ?>
<?php /*MySQLサーバー接続を試みます。MySQLが動作していることを仮定しています。 デフォルト設定のサーバー(パスワードのないユーザー「root」) */ try{ $pdo = new PDO("mysql:host=localhost", "root", "); //PDOのエラーモードを例外に設定する $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //ホスト情報を出力する echo "接続成功。ホスト情報:", $pdo->getAttribute(constant("PDO::ATTR_CONNECTION_STATUS")); } catch(PDOException $e){ die("エラー:接続できません。", $e->getMessage()); } ?>
注意: MySQLデータベースサーバーのデフォルトのユーザー名はrootで、パスワードはありません。しかし、データベースが侵害されたり、無許可のアクセスを防ぐために、MySQLアカウントにパスワードを設定するべきです。
ヒント:PDO::ATTR_ERRMODE属性をPDO::ERRMODE_EXCEPTIONに設定することで、PDOがデータベースエラーが発生したときに例外を投げることを指示します。
スクリプトの実行が終了すると、MySQLデータベースサーバーとの接続は自動的に閉じられます。しかし、それを早めに閉じたい場合は、PHPのmysqli_close()関数を呼び出すだけで良いです。
<?php /*MySQLサーバー接続を試みます。MySQLが動作していることを仮定しています。 デフォルト設定のサーバー(パスワードのないユーザー「root」)*/ $link = mysqli_connect("localhost", "root", "); // 接続を確認する if($link === false){ die("エラー:接続できません。" . mysqli_connect_error()); } // ホスト情報を出力する echo "接続成功。ホスト情報:" . mysqli_get_host_info($link); // 接続を閉じる mysqli_close($link); ?>
<?php /*MySQLサーバー接続を試みます。MySQLが動作していることを仮定しています。 デフォルト設定のサーバー(パスワードのないユーザー「root」) */ $mysqli = new mysqli("localhost", "root", "", "demo"); // 接続を確認する if($mysqli === false){ die("エラー:接続できません。" . $mysqli->connect_error; } // ホスト情報を出力する echo "接続成功。ホスト情報:" . $mysqli->host_info; // 接続を閉じる $mysqli->close(); ?>
<?php /* MySQLサーバー接続を試みます。MySQLが動作していることを仮定しています。 デフォルト設定のサーバー(パスワードのないユーザー「root」) */ try{ $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", ""); //PDOのエラーモードを例外に設定する $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //ホスト情報を出力する echo "接続成功。ホスト情報:" . $pdo->getAttribute(constant("PDO::ATTR_CONNECTION_STATUS")); } catch(PDOException $e){ die("エラー:接続できません。" . $e->getMessage()); } //接続を閉じる unset($pdo); ?>