本記事では、MySQL EXTドライバー、MySQLiドライバー、PDOドライバーを例に、PHPを使用してOB Cloudに接続し、テーブルの作成、データの挿入、クエリなどの基本的な操作を実行する方法を紹介します。
前提条件
OB Cloudデータベースアカウントに登録し、クラスタインスタンスとOB Cloud MySQLテナントを作成していること。詳細については、クラスタインスタンスの作成およびテナントの作成をご参照ください。
操作手順
ステップ1:OB Cloudデータベース接続文字列を取得する
OB Cloudコンソールにログインします。クラスターリストページで、対象クラスターの情報を展開し、対象テナントで、**接続**をクリックします。

ポップアップウィンドウで、**パブリックネットワークを使用**を選択します。
**パブリックIPアドレスを使用してデータベースに接続**ページで以下の設定を完了し、接続文字列を生成します:
パラメータ説明IPアドレスの追加 追加をクリックして、エグジットIPアドレスをホワイトリストに追加します。 証明書のダウンロード (オプション)証明書をダウンロードをクリックして、CA証明書をダウンロードし、認証を完了します。 テナントへの接続 データベース ドロップダウンボックスをクリックした後、+ データベースを作成をクリックし、プロンプトに従ってデータベースの作成を完了します。 アカウント ドロップダウンボックスをクリックした後、+ アカウントを作成をクリックし、プロンプトに従ってアカウントの作成を完了します。 接続方式 接続方式として MySQL CLI を選択します。 注意
アカウント作成後、作成時に生成されたパスワードを適切に保管してください。
ステップ2:PHPとphp-mysql環境を確認し、インストールする
Linux環境で以下のコマンドを実行してPHP環境をインストールします。
sudo yum install php sudo yum install php-mysql sudo yum install php-mysqli以下のコマンドを実行して、インストールが成功したかどうか確認します。
[root]# php -v PHP 5.4.16 (cli) (built: Dec 13 2015 00:05:14) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
ステップ3:アプリケーションファイル内のデータベース接続情報を修正し、アプリケーションを実行する
以下では、obtest.php という名前のファイルを例に、ステップ1:OB Cloudデータベース接続文字列を取得するで取得した接続文字列情報をアプリケーションファイルに追加する方法を説明します。実際の状況に応じて、作成したアプリケーションファイルを編集してください。
obtest.php ファイル内のデータベース接続情報を修正する
データベース接続部分のサンプルコードは以下のとおりです:
[root]# vim obtest.php
<?php
$servername = "t5******.aws-ap-southeast-1.oceanbase.cloud";
$port = "3306";
$username = "test";
$password = "xxxxxxx";
$dbname = "test";
// 接続の作成
$conn = mysqli_connect($servername, $username, $password, $dbname, $port);
// 接続が成功したかどうかを確認する
if (!$conn) {
die("接続失敗: " . mysqli_connect_error());
}
?>
各パラメータの説明は以下のとおりです:
$servername:接続文字列から-hパラメータを取得したもので、OB Cloud のデータベース接続アドレスです。例:t5******.aws-ap-southeast-1.oceanbase.cloud。$port:接続文字列から-Pパラメータを取得したもので、OB Cloud のデータベース接続ポートです。$username:接続文字列から-uパラメータを取得したもので、アカウント名です。例:test。$password:接続文字列から-pパラメータを取得したもので、アカウントのパスワードです。$dbname:接続文字列から-Dパラメータを取得したもので、アクセスするデータベース名です。
完全なファイルのサンプルコードは以下のとおりです:
[root]# vim obtest.php
<?php
$servername = "t5******.aws-ap-southeast-1.oceanbase.cloud";
$port = "3306";
$username = "test";
$password = "xxxxxxx";
$dbname = "test";
// 接続の作成
$conn = mysqli_connect($servername, $username, $password, $dbname, $port);
// 接続が成功したかどうかを確認する
if (!$conn) {
die("接続失敗: " . mysqli_connect_error());
}
// テーブルの作成
$sql = "CREATE TABLE myguests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";
if (mysqli_query($conn, $sql)) {
echo "テーブルmyguestsの作成に成功しました";
} else {
echo "テーブルの作成に失敗しました: " . mysqli_error($conn);
}
// データの挿入
$sql = "INSERT INTO myguests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";
if (mysqli_query($conn, $sql)) {
echo "新規レコードの挿入に成功しました";
} else {
echo "データの挿入に失敗しました: " . mysqli_error($conn);
}
// 接続を閉じる
mysqli_close($conn);
?>
obtest.phpの実行
php obtest.php コマンドを実行すると、以下のような結果が返されます。これは、データベースへの接続が成功し、テーブルの作成やデータの挿入などの操作が正常に完了したことを示します。
[root]# php obtest.php
テーブルmyguestsの作成に成功しました新規レコードの挿入に成功しましたid: 1 - Name: John Doe<br>テーブルmyguestsの削除に成功しました
obtest.phpファイル内のデータベース接続情報の変更
データベース接続部分のサンプルコードは以下のとおりです:
[root]# vim obtest1.php
<?php
$servername = "t5******.aws-ap-southeast-1.oceanbase.cloud";
$port = "3306";
$username = "test";
$password = "******";
$dbname = "test";
// 接続の作成
$conn = new mysqli($servername, $username, $password, $dbname, $port);
// 接続が成功したかどうかを確認する
if ($conn->connect_error) {
die("接続失敗: " . $conn->connect_error);
}
?>
各パラメータの説明は以下の通りです:
$servername:接続文字列から-hパラメータを取得したもので、OB Cloudデータベースの接続アドレスです。例:t5******.aws-ap-southeast-1.oceanbase.cloud。$port:接続文字列から-Pパラメータを取得したもので、OB Cloudデータベースの接続ポートです。$username:接続文字列から-uパラメータを取得したもので、アカウント名です。例:test。$password:接続文字列から-pパラメータを取得したもので、アカウントのパスワードです。$dbname:接続文字列から-Dパラメータを取得したもので、アクセスするデータベース名です。
完全なファイルのサンプルコードは以下の通りです:
[root]# vim obtest1.php
<?php
$servername = "t5******.aws-ap-southeast-1.oceanbase.cloud";
$port = "3306";
$username = "test";
$password = "******";
$dbname = "test";
// 接続の作成
$conn = new mysqli($servername, $username, $password, $dbname, $port);
// 接続が成功したかどうかを確認する
if ($conn->connect_error) {
die("接続失敗: " . $conn->connect_error);
}
// テーブルの作成
$sql = "CREATE TABLE myguests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";
if ($conn->query($sql) === TRUE) {
echo "テーブルmyguestsの作成に成功しました";
} else {
echo "テーブルの作成に失敗しました: " . $conn->error;
}
// データの挿入
$sql = "INSERT INTO myguests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";
if ($conn->query($sql) === TRUE) {
echo "新規レコードの挿入に成功しました";
} else {
echo "データの挿入に失敗しました: " . $conn->error;
}
// テーブルのクエリ
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// データの出力
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
}
} else {
echo "結果は0件です";
}
// テーブルの削除
$sql = "DROP TABLE myguests";
if ($conn->query($sql) === TRUE) {
echo "テーブルmyguestsの削除に成功しました";
} else {
echo "テーブルの削除に失敗しました: " . $conn->error;
}
// 接続を閉じる
$conn->close();
?>
obtest.phpの実行
php obtest.php コマンドを実行すると、以下の結果が返されます。これはデータベースへの接続に成功し、テーブルの作成やデータの挿入などの操作が正常に完了したことを示しています。
[root]# php obtest.php
テーブルmyguestsの作成に成功しました新規レコードの挿入に成功しましたid: 1 - Name: John Doe<br>テーブルmyguestsの削除に成功しました
obtest.phpファイル内のデータベース接続情報を修正する
データベース接続部分のサンプルコードは以下のとおりです:
[root]# vim podtest.php
<?php
$servername = "t5******.aws-ap-southeast-1.oceanbase.cloud";
$port = "3306";
$username = "test";
$password = "******";
$dbname = "test";
// 接続の作成
try {
$conn = new PDO("mysql:host=$servername;port=$port;dbname=$dbname", $username, $password);
// PDOエラーモードを例外に設定
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "接続成功";
} catch(PDOException $e) {
echo "接続失敗: " . $e->getMessage();
}
?>
各パラメータの説明は以下のとおりです:
$servername:接続文字列の-hパラメータから取得した、OB Cloudデータベースの接続アドレス。例:t5******.aws-ap-southeast-1.oceanbase.cloud。$port:接続文字列の-Pパラメータから取得した、OB Cloudデータベースの接続ポート。$username:接続文字列の-uパラメータから取得した、アカウント名。例:test。$password:接続文字列の-pパラメータから取得した、アカウントのパスワード。$dbname:接続文字列の-Dパラメータから取得した、アクセスするデータベース名。
完全なファイルのサンプルコードは以下のとおりです:
[root]# vim podtest.php
<?php
$servername = "t5******.aws-ap-southeast-1.oceanbase.cloud";
$port = "3306";
$username = "test";
$password = "******";
$dbname = "test";
// 接続の作成
try {
$conn = new PDO("mysql:host=$servername;port=$port;dbname=$dbname", $username, $password);
// PDOのエラーモードを例外に設定
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "接続成功";
} catch(PDOException $e) {
echo "接続失敗: " . $e->getMessage();
}
// テーブルの作成
try {
$sql = "CREATE TABLE myguests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";
$conn->exec($sql);
echo "テーブルmyguestsの作成に成功しました";
} catch(PDOException $e) {
echo "テーブルの作成に失敗しました: " . $e->getMessage();
}
// データの挿入
try {
$sql = "INSERT INTO myguests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";
$conn->exec($sql);
echo "新規レコードの挿入に成功しました";
} catch(PDOException $e) {
echo "データの挿入に失敗しました: " . $e->getMessage();
}
// テーブルのクエリ
try{
$sql = "SELECT id, firstname, lastname FROM myguests";
$stmt = $conn->prepare($sql);
$stmt->execute();
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
if ($stmt->rowCount() > 0) {
// データの出力
while($row = $stmt->fetch()) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
}
} else {
echo "結果は0件です";
}
} catch(PDOException $e) {
echo "テーブルのクエリエラー: " . $e->getMessage();
}
// テーブルの削除
try {
$sql = "DROP TABLE myguests";
$conn->exec($sql);
echo "テーブルmyguestsの削除に成功しました";
} catch(PDOException $e) {
echo "テーブルの削除エラー: " . $e->getMessage();
}
// 接続を閉じる
$conn = null;
?>
obtest.phpの実行
php obtest.php コマンドを実行してファイルを起動します。以下のような結果が返されれば、データベースへの接続が成功し、テーブルの作成やデータの挿入などの操作が正常に完了したことを証明します。
[root]# php obtest.php
接続に成功しましたテーブルmyguestsの作成に成功しました新規レコードの挿入に成功しましたid: 1 - Name: John Doe<br>テーブルmyguestsの削除に成功しました