PHP が MySQL に接続する
PHP 5 以降では、次の方法を使用して MySQL に接続することをお?jiǎng)幛幛筏蓼?
MySQLi 拡張機(jī)能 (「i」は改良されたことを意味します)
PDO (PHP Data Objects)
PHP の初期のバージョンでは、 MySQL 拡張機(jī)能。ただし、この拡張機(jī)能は 2012 年に廃止されました。
PDO の完全な概要については、PHP リファレンス マニュアルの PHP PDO を參照してください
MySQLi と PDO を使用する必要がありますか?
短い答えが必要な場合、つまり「どちらかを使用してください」慣れている" 。和Mysqli と PDO にはそれぞれ次の利點(diǎn)があります:
PDO MySQLI
データベースをサポート 12 の異なるデータベースをサポート Mysql
api OOP OOP +process
接続 Easy Easy
ネーミングパラメータのサポートはサポートしません
オブジェクトマッピングのサポート サポートサポート 處前処理ステートメント (クライアント) はサポートしません
パフォーマンスが高速です
サポートをサポートするストレージ プロシージャをサポートします
、PDO のさまざまなメソッドと屬性はより汎用的です さまざまなデータベースを考慮する必要があります 操作の範(fàn)囲が広いです。プロジェクトで複數(shù)のデータベースを切り替える必要がある場合は、この方法で PDO を使用することをお?jiǎng)幛幛筏蓼?。変更する必要があるのは、接続文字列と部門クエリ ステートメントだけです。 MySQLi の一連のクラスとメソッドは MySQL データベースのみを操作できます。MySQLi を使用して別のデータベースを使用する場合は、クエリを含むすべてのコードを書き直す必要があります。
どちらもオブジェクト指向ですが、MySQLi も API インターフェイスを提供します。
どちらも準(zhǔn)備されたステートメントをサポートします。 プリペアド ステートメントは SQL インジェクションを防ぐことができ、Web プロジェクトのセキュリティにとって非常に重要です。
MySQLi と PDO は MySQL インスタンスに接続します
この章と次の章では、次の 3 つの方法を使用して MySQL の PHP 操作を説明します:
MySQLi (オブジェクト指向)
MySQLi (プロセス指向)
PDO
MySQLi のインストール
Linux および Windows: ほとんどの場合、MySQLi 拡張機(jī)能は、php5 mysql パッケージがインストールされるときに自動(dòng)的にインストールされます。
インストールの詳細(xì)については、http://php.net/manual/en/mysqli.installation.phpを確認(rèn)してください。
PHPソフトウェア(PhpStorm)のサフィックス名を使用して.phpファイルにphpinfo()を記述することができます。クリック ブラウザを開いて、インストールが成功したかどうかを確認(rèn)します:
PDO インストール
インストールの詳細(xì)については、次を確認(rèn)してください: http://php.net/manual/en/pdo.installation .php
インストールが成功したかどうかは phpinfo() で確認(rèn)できます:
MySQL に接続します
MySQL データベースにアクセスする前に、まずデータベース サーバーに接続する必要があります:
インスタンス (MySQLi - オブジェクト指向)
<?php // 三個(gè)參數(shù) $servername = "localhost"; // 服務(wù)器地址(域名、IP) $username = "username"; // 數(shù)據(jù)庫用戶名 $password ="password"; // 數(shù)據(jù)庫密碼(可能為空) // 創(chuàng)建連接 $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"; // 創(chuàng)建連接 $conn = mysqli_connect($servername,$username, $password); // 檢測連接 if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } echo "連接成功"; ?>
上記のプロセス指向の例で、データベースに接続するときに接続するデータベース名を直接選択したい場合は、 4 番目のパラメータになります:
// 接続を作成します $conn = mysqli_connect($servername, $username, $password, $db_name);
インスタンス (PDO)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
try {
$conn = new PDO("mysql:host=$servername;dbname=myDB",$username, $password);
echo "連接成功";
}
catch(PDOException $e) // PDOException 錯(cuò)誤處理
{
echo $e->getMessage(); // getMessage()取得文本化的錯(cuò)誤信息
}
?>
上記の PDO の例では、データベース (myDB) を指定していることに注意してください。 PDO は、接続プロセス中にデータベース名を設(shè)定する必要があります。 指定しない場合、例外がスローされます。 ???????????????????????????????????????????????????????????????????
接続を閉じる
スクリプトの実行後、接続は自動(dòng)的に閉じられます。次のコードを使用して接続を閉じることもできます:
Instance (MySQLi - オブジェクト指向)
$coon->close();
Instance (MySQLi - Procedural)
mysql_close( $ coon);
インスタンス (PDO)
mysql_close($coon);
付録
データベースに接続してクエリ結(jié)果を取得するための完全なコードを添付します (for參照):
インスタンス
<?php $conn = mysqli_connect($servername,$username,$password); // 獲取連接 if($conn){ //判斷是否連接 mysqli_select_db($conn,"db_name"); // 選擇一個(gè)數(shù)據(jù)庫 mysqli_query($conn,"set names utf8"); // 查詢輸出要使用utf8的編碼格式,避免亂碼 $sql = "select * from product;"; // 查找到數(shù)據(jù)庫的product表() $result = mysqli_query($conn,$sql); // 從鍵連獲取到數(shù)據(jù)庫的字表 while($row = mysqli_fetch_array($result,MYSQL_ASSOC)){ // MYSQLI_ASSOC返回鍵值形式數(shù)組 echo $row["需要輸出的表中列的名稱"]; } mysqli_free_result($result); // 釋放內(nèi)存在 mysqli_close($conn); // 關(guān)閉連接 echo "成功"; }else{ echo "失敗"; }; ?>