検索
ホームページバックエンド開発PHPチュートリアルPDO を使用してデータベースを操作するための PHP の方法とテクニック

PHP は、Web 開発によく使用されるサーバー側プログラミング言語です。 Web 開発では、データベースの操作は非常に一般的な要件です。 PDO (PHP Data Objects) は、データベースを操作するための PHP の拡張ライブラリであり、MySQL、PostgreSQL、Oracle などの主流のデータベース管理システムに接続するために使用できます。

この記事では、データベースへの接続、SQL ステートメントの実行、結果セットの処理など、PDO を使用してデータベースを操作する PHP の方法とテクニックを紹介します。

  1. データベースへの接続

まず、データベースに接続する必要があります。 PDO では、次のコードを使用して PDO オブジェクトを作成できます。

$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);

ここで、localhost はデータベースが配置されているホスト名 (IP アドレスの場合もあります)、test は接続するデータベースの名前、$user$pass はそれぞれデータベースのユーザー名とパスワードです。必要に応じて上記のパラメータを変更できます。

  1. SQL ステートメントの実行

データベースに接続したら、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() メソッドを通じて結果セット内のデータの各行をループし、画面に出力できます。

  1. 結果セットの処理

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() メソッドを実行できます。

  1. トランザクション処理

データベースを操作するとき、一連の SQL ステートメントを実行し、それらがすべて正常に実行されるか、どれも実行されないかを確認する必要がある場合があります。 。これにはトランザクションを使用する必要があります。 PDO は、トランザクションを処理するための beginTransaction()commit()rollBack() およびその他のメソッドを提供します。たとえば、次のようになります。上記のコードでは、

beginTransaction()

メソッドを使用してトランザクションを開始し、commit() メソッドを使用してトランザクションをコミットします。を実行すると、コードは catch ブロックの にジャンプし、rollBack() メソッドを実行してトランザクションをロールバックします。

前処理されたステートメント
  1. SQL ステートメントを実行するとき、変数を使用して SQL ステートメントを構築する必要がある場合があります。たとえば、次のとおりです。 SQL インジェクションのリスクがあるため、準備されたステートメントを使用する必要があります。 PDO は、プリペアド ステートメントを実装するための
prepare()

メソッドと

bindParam()

メソッドを提供します。例: <pre class='brush:php;toolbar:false;'>try { $dbh-&gt;beginTransaction(); $dbh-&gt;exec(&quot;INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com')&quot;); $dbh-&gt;exec(&quot;INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com')&quot;); $dbh-&gt;commit(); } catch (PDOException $e) { $dbh-&gt;rollBack(); echo &quot;Transaction failed: &quot; . $e-&gt;getMessage(); }</pre> 上記のコードでは、プリペアド ステートメントを使用して次のことを行います。 :name はプレースホルダーとして使用されます。実行中、

$name

bindParam() メソッドを通じて :name にバインドされます。 , 実行すると、:name が実際の変数値に置き換えられ、SQL インジェクションのリスクが回避されます。 デバッグ スキル

    開発プロセスでは、SQL ステートメントの実行結果をデバッグする必要がよくあります。 PDO は、エラー情報を取得するための
  1. errorInfo()
  2. メソッドを提供します。例:
$name = "Tom";
$stmt = $dbh->query("SELECT * FROM users WHERE name='$name'");

上記のコードでは、クエリが失敗した場合、errorInfo() メソッドは次のようになります。エラー情報を取得して画面に出力するために呼び出されます。

概要

    この記事では、データベースへの接続、SQL ステートメントの実行、結果セットの処理など、PDO を使用してデータベースを操作する PHP の方法とテクニックを紹介します。 。 PDO を使用すると、さまざまなデータベース管理システムに接続でき、高品質の Web アプリケーションの開発に役立つ豊富なインターフェイスが提供されます。

以上がPDO を使用してデータベースを操作するための PHP の方法とテクニックの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
どのデータをPHPセッションに保存できますか?どのデータをPHPセッションに保存できますか?May 02, 2025 am 12:17 AM

phpssionscanStorestrings、numbers、arrays、andobjects.1.strings:textdatalikeusernames.2.numbers:integersorfloatsforcounters.3.arrays:listslikeshoppingcarts.4.objects:complextructuresthataresialized。

どのようにPHPセッションを開始しますか?どのようにPHPセッションを開始しますか?May 02, 2025 am 12:16 AM

tostartaphpsession、outsession_start()atthescript'sbeginning.1)placeitbe foreanyouttosetthesscookie.2)usesionsionsionsionserdatalikelogintatussorshoppingcarts.3)再生セッションインドストップレベントフィックスアタック

セッションの再生とは何ですか?また、セキュリティをどのように改善しますか?セッションの再生とは何ですか?また、セキュリティをどのように改善しますか?May 02, 2025 am 12:15 AM

セッション再生とは、新しいセッションIDを生成し、セッション固定攻撃の場合にユーザーが機密操作を実行するときに古いIDを無効にすることを指します。実装の手順には次のものが含まれます。1。感度操作を検出、2。新しいセッションIDを生成する、3。古いセッションIDを破壊し、4。ユーザー側のセッション情報を更新します。

PHPセッションを使用する際のパフォーマンスの考慮事項は何ですか?PHPセッションを使用する際のパフォーマンスの考慮事項は何ですか?May 02, 2025 am 12:11 AM

PHPセッションは、アプリケーションのパフォーマンスに大きな影響を与えます。最適化方法には以下が含まれます。1。データベースを使用してセッションデータを保存して応答速度を向上させます。 2。セッションデータの使用を削減し、必要な情報のみを保存します。 3.非ブロッキングセッションプロセッサを使用して、同時実行機能を改善します。 4.セッションの有効期限を調整して、ユーザーエクスペリエンスとサーバーの負担のバランスを取ります。 5.永続的なセッションを使用して、データの読み取り時間と書き込み時間を減らします。

PHPセッションはCookieとどのように異なりますか?PHPセッションはCookieとどのように異なりますか?May 02, 2025 am 12:03 AM

phpsesionsareserver-side、whilecookiesareclient-side.1)Sessionsionsionsoredataontheserver、aremoresecure.2)cookiesstoredataontheclient、cookiestoresecure、andlimitedinsizeisize.sesionsionsionivationivationivationivationivationivationivationivate

PHPはユーザーのセッションをどのように識別しますか?PHPはユーザーのセッションをどのように識別しますか?May 01, 2025 am 12:23 AM

phpidentifiesauser'ssessionsingsinssessionCookiesIds.1)whensession_start()iscalled、phpgeneratesauniquesidstoredsored incoookienadphpsessidontheuser'sbrowser.2)thisidallowsphptortorieSessiondatadata fromthata

PHPセッションを保護するためのベストプラクティスは何ですか?PHPセッションを保護するためのベストプラクティスは何ですか?May 01, 2025 am 12:22 AM

PHPセッションのセキュリティは、次の測定を通じて達成できます。1。session_regenerate_id()を使用して、ユーザーがログインまたは重要な操作である場合にセッションIDを再生します。 2. HTTPSプロトコルを介して送信セッションIDを暗号化します。 3。Session_Save_Path()を使用して、セッションデータを保存し、権限を正しく設定するためのSecure Directoryを指定します。

PHPセッションファイルはデフォルトで保存されていますか?PHPセッションファイルはデフォルトで保存されていますか?May 01, 2025 am 12:15 AM

phpsessionFilesToredInthededirectoryspecifiedBysession.save_path、通常/tmponunix-likesystemsorc:\ windows \ temponwindows.tocustomizethis:1)uesession_save_path()tosetaCustomdirectory、ensuringit'swritadistradistradistradistradistra

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。