PHP アドバンス

PHP MySQL データベースの作成

1. MySQLiとPDOを使用したMySQLデータベースの作成

MySQLでデータベースを作成するには、SQLコマンドの CREATE DATABASE を使用します。

注: MySQLデータベースを作成または削除するには、管理者権限(Administrative Privileges)が必要です。

以下の例では、"myDB" という名前のデータベースを作成します。

1.1 MySQLi オブジェクト指向での実装例

<?php
$servername = "localhost";
$username = "username";
$password = "password";

// 接続の作成
$conn = new mysqli($servername, $username, $password);

// 接続の確認
if ($conn->connect_error) {
  die("接続に失敗しました: " . $conn->connect_error);
}

// データベースの作成
$sql = "CREATE DATABASE myDB";
if ($conn->query($sql) === TRUE) {
  echo "データベースが正常に作成されました";
} else {
  echo "データベース作成エラー: " . $conn->error;
}

// 接続を閉じる
$conn->close();
?>

注: 新しいデータベースを作成する際、mysqli オブジェクトには最初の3つの引数(サーバー名、ユーザー名、パスワード)のみを指定する必要があります。

       Tips: 特定のポート(Port)を使用する必要がある場合は、データベース名の引数に空の文字列を指定して、次のように記述します: new mysqli("localhost", "username", "password", "", port)

1.2 MySQLi 手続き型での実装例

<?php
$servername = "localhost";
$username = "username";
$password = "password";

// 接続の作成
$conn = mysqli_connect($servername, $username, $password);

// 接続の確認
if (!$conn) {
  die("接続に失敗しました: " . mysqli_connect_error());
}

// データベースの作成
$sql = "CREATE DATABASE myDB";
if (mysqli_query($conn, $sql)) {
  echo "データベースが正常に作成されました";
} else {
  echo "データベース作成エラー: " . mysqli_error($conn);
}

// 接続を閉じる
mysqli_close($conn);
?>

1.3 PDOでの実装例

<?php
$servername = "localhost";
$username = "username";
$password = "password";

try {
  // PDOインスタンスの作成
  $conn = new PDO("mysql:host=$servername", $username, $password);
  // PDOエラーモードを例外(Exception)に設定
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
  die("接続できませんでした。 " . $e->getMessage());
}

try {
  // データベース作成のSQL実行
  $sql = "CREATE DATABASE myDB";
  $conn->exec($sql);
  echo "データベースが正常に作成されました";
} catch(PDOException $e) {
  // データベース作成中のエラーをハンドリング
  echo "データベース作成エラー: " . $sql . "<br>" . $e->getMessage();
}

// 接続を閉じる
$conn = null;
?>

Tips: PDOには、データベースクエリで発生する可能性のある問題を処理するための

例外(Exception)クラスが用意されています。try { } ブロック内で例外がスローされると、スクリプトの実行は停止し、直後の catch(){ } ブロックへ処理が移ります。上記の catch ブロックでは、実行したSQLステートメントと発生したエラーメッセージを出力しています。