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 インスタンスに接続します
この章と次の章では、次の 3 つの方法を使用して MySQL の PHP 操作を説明します。
MySQLi (オブジェクト指向)
MySQLi (プロシージャ) )
PDO
MySQLi インストール
Linux および Windows: ほとんどの場合、MySQLi 拡張機能は、php5 mysql パッケージがインストールされるときに自動的にインストールされます。
インストールの詳細については、次を確認してください: http://php.net/manual/en/mysqli.installation.php
phpinfo() を通じてインストールが成功したかどうかを確認できます:
PDO インストール
インストールについて 詳細については、 http://php.net/manual/en/pdo.installation.php を参照してください。
phpinfo() を通じてインストールが成功したかどうかを確認できます:
MySQL に接続します
MySQL データベースにアクセスする前に、まずデータベース サーバーに接続する必要があります:
例 (MySQLi - オブジェクト指向)
<?php $servername = "localhost"; //服务器 $username = "username"; //用户名 $password = "password"; //密码 // 创建连接 $conn = new mysqli($servername, $username, $password); // 检测连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } echo "连接成功"; ?>
注上記のオブジェクト指向の例では、$connect_error は PHP 5.2.9 および 5.3.0 で追加されました。以前のバージョンとの互換性が必要な場合は、次のコード置換を使用してください:
// 接続を検出
if (mysqli_connect_error()) {
Die("データベース接続に失敗しました: " . mysqli_connect_error());
}
インスタンス (MySQLi - プロセス指向)
<?php $servername = "localhost"; $username = "username"; $password = "password"; // 创建连接 $conn = mysqli_connect($servername, $username, $password); // 检测连接 if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } echo "连接成功"; ?>
インスタンス (PDO)
<?php $servername = "localhost"; $username = "username"; $password = "password"; try { $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password); echo "连接成功"; } catch(PDOException $e) { echo $e->getMessage(); } ?>
上記の PDO インスタンスではデータベース (myDB) を指定していることに注意してください。 PDO は、接続プロセス中にデータベース名を設定する必要があります。指定しない場合、例外がスローされます。
接続を閉じる
スクリプトの実行後、接続は自動的に閉じられます。次のコードを使用して接続を閉じることもできます:
Instance (MySQLi - オブジェクト指向)
$conn->close();
Instance (MySQLi - Procedural)
mysqli_close ( $conn);
インスタンス (PDO)
$conn = null;