PHP 5以降では、以下を使用してMySQLデータベースを操作できます:
以前のバージョンのPHPでは、MySQL拡張を使用していました。しかし、2012年にはこの拡張機能が廃止されました。
簡単に言えば、「どちらが好きか」と言うことになります。
MySQLiとPDOの両方に利点があります:
PDOは、12種類のデータベースシステムで動作しますが、MySQLiはMySQLデータベースのみで動作します。
従って、プロジェクトを別のデータベースに切り替える必要がある場合は、PDOの方が処理が簡単です。 コネクション用の文字列と多少のクエリを変更するだけです。MySQLiを使用する場合は、クエリを含むコード全体を書き直す必要があります。
どちらもオブジェクト指向ですが、MySQLiは手続き型APIも提供しています。
どちらも Prepared Statementsをサポートしています。Prepared Statementsは、SQLインジェクションから保護する、 Webアプリケーションのセキュリティにとって非常に重要なものです。
この章と次の章では、PHPとMySQLを扱う3つの方法を紹介します:
LinuxとWindowsの場合:MySQLi拡張は、ほとんどの場合、php5 mysqlパッケージをインストールすると自動的にインストールされます。
インストールの詳細については、 http://php.net/manual/en/mysqli.installation.phpを参照してください。
インストールの詳細については、 http://php.net/manual/en/pdo.installation.phpを参照してください。
MySQLデータベースのデータにアクセスする前に、サーバに接続する必要があります:
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
PHPは、すばらしくて、人気のある言語です!
上のオブジェクト指向型の例に関する注意:$connect_errorは、PHP 5.2.9と5.3.0まで壊れていました。
5.2.9と5.3.0より前のバージョンのPHPとの互換性を確保する必要がある場合は、代わりに次のコードを使用してください。
Note on the object-oriented example above: $connect_error was
broken until PHP 5.2.9 and 5.3.0. If you need to ensure compatibility with PHP
versions prior to 5.2.9 and 5.3.0, use the following code instead:
// 接続のチェックする
if (mysqli_connect_error()) {
die("Database connection failed: " . mysqli_connect_error());
}
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = mysqli_connect($servername, $username, $password);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>
<?php
$servername = "localhost";
$username = "username";
$password = "password";
try {
$conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
?>
上のPDOの例では、データベース(myDB)も指定しているのに注意してください。PDOに接続するには妥当なデータベースが必要です。
チップ:PDOの素晴らしい点は、データベースクエリで発生する可能性のある問題を処理するための例外クラスがあることです。 try{ } ブロック内で例外がスローされた場合、スクリプトは実行を停止し、最初の catch(){ } ブロックに直接処理が移ります。
スクリプトが終了すると、接続は自動的に閉じられます。終了前に接続を閉じるには、以下を使用します:
$conn->close();
mysqli_close($conn);
$conn = null;