PHP は、Web 開発によく使用されるサーバー側プログラミング言語です。 Web 開発では、データベースの操作は非常に一般的な要件です。 PDO (PHP Data Objects) は、データベースを操作するための PHP の拡張ライブラリであり、MySQL、PostgreSQL、Oracle などの主流のデータベース管理システムに接続するために使用できます。
この記事では、データベースへの接続、SQL ステートメントの実行、結果セットの処理など、PDO を使用してデータベースを操作する PHP の方法とテクニックを紹介します。
まず、データベースに接続する必要があります。 PDO では、次のコードを使用して PDO オブジェクトを作成できます。
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
ここで、localhost
はデータベースが配置されているホスト名 (IP アドレスの場合もあります)、test
は接続するデータベースの名前、$user
と $pass
はそれぞれデータベースのユーザー名とパスワードです。必要に応じて上記のパラメータを変更できます。
データベースに接続したら、SQL ステートメントを実行できます。 PDO には、SQL ステートメントを実行するためのメソッドがいくつか用意されています。一般的に使用されるメソッドは次のとおりです:
exec($query)
: INSERT、UPDATE、DELETE などの操作を実行し、影響を受ける行数; query($query)
: SELECT ステートメントを実行し、結果セットを返します; prepare($query)
: SQL ステートメントを準備すると、PDOStatement オブジェクトが返されます。このオブジェクトは、bindValue() メソッドを通じてパラメータをバインドした後に実行できます。 たとえば、次のコードを使用して、users
テーブル内のすべてのレコードをクエリできます。
$stmt = $dbh->query("SELECT * FROM users"); while ($row = $stmt->fetch()) { echo $row['id'] . " " . $row['name'] . " "; }
上記のコードでは、$dbh
は PDO オブジェクトです。query()
メソッドを使用して SELECT ステートメントを実行し、PDOStatement オブジェクトを返します。 fetch()
メソッドを通じて結果セット内のデータの各行をループし、画面に出力できます。
SELECT ステートメントの実行後、PDOStatement オブジェクトを通じて結果セット内のデータにアクセスできます。 PDO には、結果セットにアクセスするためのメソッドがいくつか用意されています。一般的に使用されるメソッドをいくつか示します:
fetch()
: 結果セット内のデータの次の行を取得し、連想配列を返します。 array;fetchAll()
: 結果セット内のすべてのデータを取得し、2 次元の連想配列を返します; rowCount()
: 結果セット番号の行を取得します。 たとえば、次のコードを使用して、users
テーブル内の ID 1 のユーザー情報をクエリできます。
$stmt = $dbh->prepare("SELECT * FROM users WHERE id=:id"); $stmt->bindValue(':id', 1, PDO::PARAM_INT); $stmt->execute(); $row = $stmt->fetch(); if ($row) { echo "ID: " . $row['id'] . " "; echo "Name: " . $row['name'] . " "; echo "Email: " . $row['email'] . " "; } else { echo "Not found. "; }
上記のコードでは、 prepare( )
メソッドは SQL ステートメントを準備するために使用されます。形式 :name
を使用して名前付きパラメータを定義できます。 bindValue()
メソッドを通じてパラメーター値をバインドし、SQL ステートメント内のプレースホルダーに対応する execute()
メソッドを実行できます。
データベースを操作するとき、一連の SQL ステートメントを実行し、それらがすべて正常に実行されるか、どれも実行されないかを確認する必要がある場合があります。 。これにはトランザクションを使用する必要があります。 PDO は、トランザクションを処理するための beginTransaction()
、commit()
、rollBack()
およびその他のメソッドを提供します。たとえば、次のようになります。上記のコードでは、
メソッドを使用してトランザクションを開始し、commit()
メソッドを使用してトランザクションをコミットします。を実行すると、コードは catch ブロックの
にジャンプし、rollBack()
メソッドを実行してトランザクションをロールバックします。
メソッドと
bindParam() メソッドを提供します。例: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>try {
$dbh->beginTransaction();
$dbh->exec("INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com')");
$dbh->exec("INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com')");
$dbh->commit();
} catch (PDOException $e) {
$dbh->rollBack();
echo "Transaction failed: " . $e->getMessage();
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
上記のコードでは、プリペアド ステートメントを使用して次のことを行います。 :name
はプレースホルダーとして使用されます。実行中、
は bindParam()
メソッドを通じて :name
にバインドされます。 , 実行すると、:name
が実際の変数値に置き換えられ、SQL インジェクションのリスクが回避されます。 デバッグ スキル
$name = "Tom"; $stmt = $dbh->query("SELECT * FROM users WHERE name='$name'");
上記のコードでは、クエリが失敗した場合、errorInfo()
メソッドは次のようになります。エラー情報を取得して画面に出力するために呼び出されます。
概要
以上がPDO を使用してデータベースを操作するための PHP の方法とテクニックの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。