PHP が MySQL に接続する
PHP 5 以降では、次の方法を使用して MySQL に接続することをお勧めします:
MySQLi 拡張機能 (「i」は改良されたことを意味します)
PDO (PHP Data Objects)
PHP の初期のバージョンでは、 MySQL 拡張機能。ただし、この拡張機能は 2012 年に廃止されました。
PDO の完全な概要については、PHP リファレンス マニュアルの PHP PDO を参照してください
MySQLi と PDO を使用する必要がありますか?
短い答えが必要な場合、つまり「どちらかを使用してください」慣れている" 。和Mysqli と PDO にはそれぞれ次の利点があります:
PDO MySQLI
データベースをサポート 12 の異なるデータベースをサポート Mysql
api OOP OOP +process
接続 Easy Easy
ネーミングパラメータのサポートはサポートしません
オブジェクトマッピングのサポート サポートサポート 处前処理ステートメント (クライアント) はサポートしません
パフォーマンスが高速です
サポートをサポートするストレージ プロシージャをサポートします
、PDO のさまざまなメソッドと属性はより汎用的です さまざまなデータベースを考慮する必要があります 操作の範囲が広いです。プロジェクトで複数のデータベースを切り替える必要がある場合は、この方法で PDO を使用することをお勧めします。変更する必要があるのは、接続文字列と部門クエリ ステートメントだけです。 MySQLi の一連のクラスとメソッドは MySQL データベースのみを操作できます。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を確認してください。
PHPソフトウェア(PhpStorm)のサフィックス名を使用して.phpファイルにphpinfo()を記述することができます。クリック ブラウザを開いて、インストールが成功したかどうかを確認します:
PDO インストール
インストールの詳細については、次を確認してください: http://php.net/manual/en/pdo.installation .php
インストールが成功したかどうかは phpinfo() で確認できます:
MySQL に接続します
MySQL データベースにアクセスする前に、まずデータベース サーバーに接続する必要があります:
インスタンス (MySQLi - オブジェクト指向)
<?php // 三个参数 $servername = "localhost"; // 服务器地址(域名、IP) $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 "连接成功"; ?>
上記のプロセス指向の例で、データベースに接続するときに接続するデータベース名を直接選択したい場合は、 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 错误处理
{
echo $e->getMessage(); // getMessage()取得文本化的错误信息
}
?>
上記の PDO の例では、データベース (myDB) を指定していることに注意してください。 PDO は、接続プロセス中にデータベース名を設定する必要があります。 指定しない場合、例外がスローされます。
接続を閉じる
スクリプトの実行後、接続は自動的に閉じられます。次のコードを使用して接続を閉じることもできます:
Instance (MySQLi - オブジェクト指向)
$coon->close();
Instance (MySQLi - Procedural)
mysql_close( $ coon);
インスタンス (PDO)
mysql_close($coon);
付録
データベースに接続してクエリ結果を取得するための完全なコードを添付します (for参照):
インスタンス
<?php $conn = mysqli_connect($servername,$username,$password); // 获取连接 if($conn){ //判断是否连接 mysqli_select_db($conn,"db_name"); // 选择一个数据库 mysqli_query($conn,"set names utf8"); // 查询输出要使用utf8的编码格式,避免乱码 $sql = "select * from product;"; // 查找到数据库的product表() $result = mysqli_query($conn,$sql); // 从键连获取到数据库的字表 while($row = mysqli_fetch_array($result,MYSQL_ASSOC)){ // MYSQLI_ASSOC返回键值形式数组 echo $row["需要输出的表中列的名称"]; } mysqli_free_result($result); // 释放内存在 mysqli_close($conn); // 关闭连接 echo "成功"; }else{ echo "失败"; }; ?>