PHP Connect to MySQL
PHP 5以降は、以下を使用してMySQLデータベースを操作できます。
- MySQLi拡張機能(「i」は改善を意味します)
- PDO(PHPデータオブジェクト)
以前のバージョンのPHPは、MySQL拡張機能を使用していました。ただし、この拡張機能は2012年に廃止されました。
MySQLiまたはPDOを使用する必要がありますか?
短い答えが必要な場合は、「好きなものは何でも」になります。
MySQLiとPDOの両方に利点があります。
PDOは12の異なるデータベースシステムで動作しますが、MySQLiはMySQLデータベースでのみ動作します。
したがって、別のデータベースを使用するためにプロジェクトを切り替える必要がある場合、PDOを使用するとプロセスが簡単になります。接続文字列といくつかのクエリを変更するだけです。MySQLiでは、コード全体(クエリを含む)を書き直す必要があります。
どちらもオブジェクト指向ですが、MySQLiは手続き型APIも提供しています。
どちらもプリペアドステートメントをサポートしています。プリペアドステートメントはSQLインジェクションから保護し、Webアプリケーションのセキュリティにとって非常に重要です。
MySQLiとPDOの両方の構文でのMySQLの例
この章と次の章では、PHPとMySQLを操作する3つの方法を示します。
- MySQLi(オブジェクト指向)
- MySQLi(手続き型)
- PDO
MySQLiのインストール
LinuxおよびWindowsの場合:php5 mysqlパッケージがインストールされると、ほとんどの場合、MySQLi拡張機能が自動的にインストールされます。
インストールの詳細については、http: //php.net/manual/en/mysqli.installation.phpにアクセスしてください。
PDOのインストール
インストールの詳細については、http: //php.net/manual/en/pdo.installation.phpにアクセスしてください。
MySQLへの接続を開く
MySQLデータベースのデータにアクセスする前に、サーバーに接続できる必要があります。
例(MySQLiオブジェクト指向)
<?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";
?>
上記のオブジェクト指向の例に注意してください。
$ connect_errorは、PHP5.2.9および5.3.0まで壊れていました。5.2.9および5.3.0より前のバージョンのPHPとの互換性を確保する必要がある場合は、代わりに次のコードを使用して
ください 。}
例(MySQLi手続き型)
<?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";
?>
例(PDO)
<?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(){}ブロックに直接流れます。
接続を閉じる
スクリプトが終了すると、接続は自動的に閉じられます。前に接続を閉じるには、次を使用します。
MySQLiオブジェクト指向:
$conn->close();
MySQLi手続き型:
mysqli_close($conn);
PDO:
$conn = null;