オープンソースのデータベースである MySQLは、多くのレンタルサーバーに搭載されていて使われています。ブログ作成の定番ツールであるWordPressも、Mysql がないと基本的には動作しません。
最近ではMySQLから派生したMariaDBを使用しているレンタルサーバーも増えましたが、プログラム的にはMySQLもMariaDBも同じとなります。
ここでは、PHPでMySQL(MariaDB)を使用する方法をサンプルプログラムを示して解説していきます。
mysqli_connect 関数でMySQLに接続する方法
PHPでMySQLに接続するにはいくつかの方法がありますが、mysqli_connect 関数を使用して接続するサンプルプログラムを紹介します。
以前は、mysql_connect 関数というものが使用されていましたが、この関数はPHP7で削除されております。これから新しいプログラムを作成する場合は、mysqli_connect 関数のほうを使用するようにしましょう。
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "my_database";
$conn = mysqli_connect($servername, $username, $password, $dbname);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$query_1 = "
CREATE TABLE IF NOT EXISTS MyTable (
ID int,
Name TEXT
);
";
mysqli_query($conn, $query_1);
$query_2 = "INSERT INTO MyTable (ID, Name) VALUES (1, 'Alice'), (2, 'Bob');";
mysqli_query($conn, $query_2);
$result = mysqli_query($conn, 'SELECT * FROM MyTable');
foreach($result as $row) {
print_r($row);
}
mysqli_close($conn);
実行結果:
Array ( [ID] => 1 [Name] => Alice )
Array ( [ID] => 2 [Name] => Bob )
プログラム解説
それでは、mysqli_connect 関数を使ってMySQLを使用するサンプルプログラムについて解説します。
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "my_database"
ここでは、データベースに接続するためにパラメータを指定しております。変数「$servername」にデータベースのあるサーバー名を設定しております。PHPを実行するサーバーと同じ場合は、「localhost」でよいですが、異なる場合は「mysql11.xserver.jp」などのサーバー名を指定します。
変数「$username」にデータベースにログインするためのユーザー名、変数「$password」にはパスワードを指定してください。変数「$dbname」には接続するデータベース名を指定します。
$conn = mysqli_connect($servername, $username, $password, $dbname);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
mysqli_connect 関数に上記で設定した引数を指定して、MySQLに接続しております。接続に成功した場合はオブジェクトが返却され、接続に失敗した場合は、「false」が返却されます。接続に失敗した場合はmysqli_connect_error 関数を使用すれば、エラーの詳細を表示することができます。
$query_1 = "
CREATE TABLE IF NOT EXISTS MyTable (
ID int,
Name TEXT
);
";
mysqli_query($conn, $query_1);
CREATE文を使用してMyTable というテーブルを作成しております。mysqli_query 関数でクエリーを実行することができます。第一引数には、MySQL接続の際に返却されたオブジェクトを指定し、第二引数にはクエリーを指定します。
$query_2 = "INSERT INTO MyTable (ID, Name) VALUES (1, 'Alice'), (2, 'Bob');";
mysqli_query($conn, $query_2);
上記で作成したテーブルにINSERT文でデータを挿入しております。
$result = mysqli_query($conn, 'SELECT * FROM MyTable');
foreach($result as $row) {
print_r($row);
}
SELECT文でテーブルのデータを検索し、取得しております。結果は多次元配列で返却されます。
mysqli_close($conn);
MYSQLとの接続を解除するには、mysqli_close 関数を使用します。引数には、MySQL接続の際に返却されたオブジェクトを指定します。
PDOを使ってMySQLに接続する方法
PDOとは、「PHP Data Objects」に標準で搭載されているデータベースにアクセスするためのクラスです。PDOを使用すれば、MySQLはもちろんのこと、PostgreSQLやSQLite、Oracleなどのデータベースにも接続することができます。
PDOを使用してMySQLに接続するサンプルプログラムについて見ていきたいと思います。
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "my_database";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
} catch (PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
$query_1 = "
CREATE TABLE IF NOT EXISTS MyTable (
ID int,
Name TEXT
);
";
$conn->query($query_1);
$query_2 = "INSERT INTO MyTable (ID, Name) VALUES (1, 'Alice'), (2, 'Bob');";
$conn->query($query_2);
$stmt = $conn->query('SELECT * FROM MyTable');
while ($row = $stmt->fetch()) {
print_r($row);
}
unset($conn);
実行結果:
Array ( [ID] => 1 [0] => 1 [Name] => Alice [1] => Alice )
Array ( [ID] => 2 [0] => 2 [Name] => Bob [1] => Bob )
プログラム解説
このプログラムでやっていることは上記の「mysqli_connect 関数でMySQLに接続する方法」と基本的に同じです。
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "my_database";
この部分は、上記のmysqli_connect 関数と同じです。
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
} catch (PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
PDOクラスを使用してMySQLに接続しております。PDO接続でエラーが発生した場合は、PDOExceptionがスローされます。
$query_1 = "
CREATE TABLE IF NOT EXISTS MyTable (
ID int,
Name TEXT
);
";
$conn->query($query_1);
$query_2 = "INSERT INTO MyTable (ID, Name) VALUES (1, 'Alice'), (2, 'Bob');";
$conn->query($query_2);
この部分でテーブルを作成し、データを挿入しております。mysqli_connect 関数を使用する方法では、CREATE文とINSERT文を一つの変数で一度に実行できましたが、このPDOを使用する方法では、それだとエラーになってしまいましたので、SQL文を2つに分けております。
PDOクラスでクエリーを実行する場合は、query メソッドを使用します。SQLに変数がある場合は、query メソッドではなく、execute メソッドを使用しますが、詳細は本記事では割愛します。
$stmt = $conn->query('SELECT * FROM MyTable');
while ($row = $stmt->fetch()) {
print_r($row);
}
query メソッドの戻り値は、クエリー実行に失敗した場合は「false」、成功した場合はPDOStatement クラスのオブジェクトとなります。この場合は、オブジェクトにはSELECT文の検索結果が格納されております。
PDOStatement クラスの fetch メソッドで検索結果の次の行を取り出すことができます。
まとめ
PHPでMySQL(MariaDB)を使用する方法をサンプルプログラムを示して解説してきましたが、いかがでしたでしょうか。とりあえず、サンプルでは接続と、テーブルの作成、挿入、検索を行ってみました。
MySQLとの接続には mysqli_connect 関数を使用する方法と、PDOクラスを使用する方法がありましたね。mysqli_connect 関数を使用する方法のほうがシンプルですが、PDOクラスはMySQL以外のデーターベースにも使用できるので汎用性があります。
コメント