はじめに
MySQLにアクセスしてコンテンツを追加するには データベースの場合、最初にデータベースと PHPの間の接続を確立する必要があります スクリプト。
このチュートリアルでは、MySQLi拡張機能とPHPデータオブジェクトを使用してMySQLに接続する方法を学びます 。従来のレガシーmysql_関数は非推奨であり、このガイドでは取り上げません。
前提条件
- 特別なCREATE特権
- MySQLデータベース
- MySQLiまたはPDO拡張機能
PHPを使用してMySQLデータベースに接続する2つの方法
PHPを使用してMySQLデータベースに接続する一般的な方法は2つあります。
- PHPのMySQLi拡張機能を使用
- PHPデータオブジェクト(PDO)を使用
このガイドには、PHPスクリプトで使用されるクレデンシャルの説明と、MySQLiおよびPDOを使用して発生する可能性のある潜在的なエラーも含まれています。
オプション1:MySQLの改良された拡張機能を使用してMySQLに接続する
MySQLi MySQLデータベースのみをサポートする拡張機能です。 MySQLシステム(バージョン4.1以降)にある新しい機能へのアクセスを可能にし、オブジェクト指向と手続き型の両方のインターフェースを提供します。サーバー側のプリペアドステートメントはサポートされますが、クライアント側のプリペアドステートメントはサポートされません。
MySQLi拡張機能はPHPバージョン5以降に含まれています。
MySQLi手続き型アプローチを使用してMySQLデータベースに接続するためのPHPスクリプトは次のとおりです。
<?php
$servername = "localhost";
$database = "database";
$username = "username";
$password = "password";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $database);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo “Connected successfully”;
mysqli_close($conn);
?>
クレデンシャルの説明
スクリプトの最初の部分は、4つの変数(サーバー名、データベース、ユーザー名、およびパスワード)とそれぞれの値です。これらの値は、接続の詳細に対応している必要があります。
次は、メインのPHP関数 mysqli_connect()です。 。指定されたデータベースとの接続を確立します。
以下は「ifステートメント」です。 。」これは、接続が確立されたかどうかを示すコードの一部です。接続に失敗すると、接続に失敗しましたというメッセージが表示されます。 。 ダイ 関数はメッセージを出力してから終了します スクリプトから。
接続が成功すると、「正常に接続されました」と表示されます。 。」
スクリプトが終了すると、データベースとの接続も閉じます。コードを手動で終了する場合は、 mysqli_closeを使用します 機能。
オプション2:PDOを使用してMySQLに接続する
PHPデータオブジェクト(PDO) データベースに接続するためのインターフェースとして機能する拡張機能です。 MySQLiとは異なり、任意のデータベース機能を実行でき、MySQLに限定されません。これにより、データベース間の柔軟性が可能になり、MySQLよりも一般的です。 PDOは、サーバー側とクライアント側の両方のプリペアドステートメントをサポートします。
PDO拡張機能を介してMySQLデータベースに接続するためのPHPコードは次のとおりです。
<?php
$servername = "localhost";
$database = "database";
$username = "username";
$password = "password";
$charset = "utf8mb4";
try {
$dsn = "mysql:host=$servername;dbname=$database;charset=$charset";
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo “Connection Okay”;
return $pdo
}
catch (PDOException $e)
{
echo “Connection failed: ”. $e->getMessage();
}
?>
クレデンシャル構文
まず、5つの変数(サーバー名、データベース、ユーザー名、パスワード、および文字セット)とそれらの値があります。これらの値は、接続の詳細に対応している必要があります。
サーバー名 localhostになります 。オンラインサーバーに接続している場合は、そのサーバーのサーバー名を入力します。
変数文字セット データを送受信するエンコーディングをデータベースに通知します。推奨される標準はutf8mb4です 。
ブロックを試してキャッチする
PDOの大きな利点は、例外があることです。 データベースクエリの潜在的な問題を処理するクラス。 try and catch を組み込むことで、これらの問題を解決します。 ブロック。
接続中に問題が発生した場合、実行を停止し、キャッチを試みます。 問題を解決します。 キャッチ ブロックは、エラーメッセージを表示するように設定できます または代替コードを実行します 。
try and catchの最初のパラメータ ブロックはDSN、 これはデータベース(ベース)ソース名の略です 。データベースのタイプと名前、およびその他の追加情報を定義するため、これは非常に重要です。
この例では、MySQLデータベースを使用しています。ただし、PDOはさまざまなタイプのデータベースをサポートしています。別のデータベースがある場合は、構文のその部分を置き換えます( mysql )使用しているデータベースを使用します。
次はPDOです 変数。この変数は、データベースへの接続を確立します。 3つのパラメータがあります:
- データソース名(dsn)
- データベースのユーザー名
- データベースのパスワード
以下はsetAttributeメソッドです PDOに2つのパラメータを追加します:
- PDO ::ATTR_ERRMODE
- PDO ::ERRMODE_EXCEPTION
このメソッドは、PDOに例外を実行するように指示します クエリが失敗した場合。
エコー「接続は大丈夫」を追加します 。」接続が確立されたことを確認します。
戻る データベースに接続するためのPDO変数。
PDO変数を返した後、 PDOExceptionを定義します キャッチで 接続に失敗したときにメッセージを表示するように指示してブロックします。
MySQLiとPDOの潜在的なエラー
不正なパスワード
PHPコードのパスワードは、データベースのパスワードと一致している必要があります。 2つが一致しない場合、データベースとの接続を確立できません。 接続に失敗しましたというエラーメッセージが表示されます 。
考えられる解決策 :
- データベースの詳細をチェックして、パスワードが正しいことを確認してください。
- データベースに割り当てられているユーザーがいることを確認してください。
MySQLサーバーに接続できません
サーバー名が認識されない場合、PHPはMySQLサーバーに接続できない場合があります。 サーバー名を確認してください localhostに設定されています 。
その他のエラーが発生した場合は、必ず error_logを参照してください。 問題を解決しようとするときに役立つファイル。このファイルは、スクリプトが実行されているのと同じフォルダーにあります。