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()を記述することができます。クリック ブラウザを開いて、インストールが成功したかどうかを確認します:

105.jpg


PDO インストール

インストールの詳細については、次を確認してください: http://php.net/manual/en/pdo.installation .php

インストールが成功したかどうかは phpinfo() で確認できます:

106.jpg

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 番目のパラメータになります:

$db_name = "db_name"; // データベース名


// 接続を作成します $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 "失败"; 
}; 
?>


学び続ける
||
<?php $servername = "localhost"; $username = "username"; $password = "password"; // 创建连接 $conn = new mysqli($servername, $username, $password); // 检测连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } echo "连接成功"; ?>
  • おすすめコース
  • コースウェアのダウンロード
現時点ではコースウェアはダウンロードできません。現在スタッフが整理中です。今後もこのコースにもっと注目してください〜