English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP基本チュートリアル

PHP高度なチュートリアル

PHP & MySQL

PHPリファレンスマニュアル

PHP MySQL 接続

このチュートリアルでは、PHPでMySQLサーバーに接続する方法を学びます。

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プロジェクトにはより良い選択肢になるかもしれません。

MySQLデータベースサーバーに接続する

PHPでは、mysqli_connect()関数を使用してこの操作を簡単に実行できます。PHPとMySQLデータベースサーバー間のすべての通信はこの接続を通じて行われます。以下は、MySQLiとPDO拡張を使用してMySQLに接続する3つの基本的な構文です:

構文:MySQLi、プログラミング方式

$link = mysqli_connect("hostname", "username", "password", "database");

構文:MySQLi、オブジェクト指向の方式

$mysqli = new mysqli("hostname", "username", "password", "database");

構文:PHPデータオブジェクト(PDO)方式

$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データベースサーバー接続を閉じる

スクリプトの実行が終了すると、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);
?>