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

PHP が PDO を使用してデータベースを操作する方法

Jun 18, 2023 am 08:36 AM
phppdoデータベース操作

Web 開発において、データベースは非常に重要なコンポーネントです。他のプログラミング言語と同様、PHP 言語にもデータベースを操作するためのさまざまな方法があります。その中でも、PDO (PHP Data Object) は、PHP でデータベースを操作する一般的な方法の 1 つであり、さまざまなデータベース システムにアクセスするための統合された、シンプル、柔軟かつ安全な方法を提供します。この記事では、PHP が PDO を使用してデータベースを操作する方法を紹介します。

1. PDO の利点

PDO を使用してデータベースを操作する利点は次のとおりです:

  1. プログラムは強力な移植性を備えています。データベースの移植性が向上 データベースは強力であり、プログラムに大きな変更を加えることなく、さまざまなデータベース上で実行できます。
  2. 高セキュリティ: PDO はコマンド ライン パラメーターの処理をサポートし、SQL インジェクション攻撃を効果的に防止できます。
  3. オブジェクト指向: PDO はオブジェクト指向であり、OOP プログラミングをより便利にすることができます。
  4. 優れたパフォーマンス: PDO はプリペアド ステートメントとデータ バインディングをサポートしているため、クエリの効率が大幅に向上し、それによってプログラムのパフォーマンスが向上します。

2. PDO を使用してデータベースに接続する

PDO を使用してデータベースの操作を開始する前に、まずデータベースに接続する必要があります。データベースに接続するコードは次のとおりです。

//设置数据库连接信息
$dsn = 'mysql:host=localhost;dbname=testdb';
$username = 'root';
$password = 'root';
$options = [
    //错误模式:在发生错误时抛出异常
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    //默认返回关联数组
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
];
//创建PDO对象
$pdo = new PDO($dsn, $username, $password, $options);

このうち、$dsn はデータベースの種類、ホスト名、データベース名などの情報を表し、$username はユーザー名、$password はパスワード、$options はデータベースの種類、ホスト名、データベース名などの情報を表します。エラーモードの設定、戻り値のデータ型などの設定。データベースに接続するときは、次のような他のオプションも設定できます:

$options = [
    //设置字符集
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
    //关闭持久连接
    PDO::ATTR_PERSISTENT => false,
    //设置超时时间
    PDO::ATTR_TIMEOUT => 10,
    //设置返回数据类型为对象
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
    // 禁用预处理语句的模拟
    PDO::ATTR_EMULATE_PREPARES => false,
];

3. PDO は、追加、削除、変更、およびクエリ操作を実装します

データベースに接続した後、次のことを実行できます。データベースに対する追加、削除、変更、およびクエリ操作。一般的に使用される操作には、データの挿入、データの更新、データの削除、データのクエリが含まれます。

  1. データの挿入

PDO を使用してデータベースにデータを挿入するコードは次のとおりです:

//插入数据
$sql = "INSERT INTO `users` (`name`,`age`,`email`) VALUES (:name,:age,:email)";
$name = 'Tom';
$age = 23;
$email = 'tom@example.com';
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':name', $name);
$stmt->bindValue(':age', $age);
$stmt->bindValue(':email', $email);
$stmt->execute();

このうち、$sql は SQL です。データを挿入するには、ステートメントを使用します。パラメーター バインド方法を使用すると、SQL インジェクション攻撃を回避できます。 bindValue() メソッドは、パラメータを指定された名前のプレースホルダーにバインドし、その後、execute() メソッドを呼び出してクエリをデータベースに送信します。

  1. データの更新

PDO を使用してデータを更新するコードは次のとおりです。

//更新数据
$sql = "UPDATE `users` SET `age` = :age WHERE `name` = :name";
$name = 'Tom';
$age = 24;
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':name', $name);
$stmt->bindValue(':age', $age);
$stmt->execute();

このうち、$sql はデータを更新する SQL 文です。データ、パラメータ バインディングを使用する 特定の方法で、SQL インジェクション攻撃を回避できます。 bindValue() メソッドは、パラメータを指定された名前のプレースホルダーにバインドし、その後、execute() メソッドを呼び出してクエリをデータベースに送信します。

  1. データの削除

PDO を使用してデータを削除するコードは次のとおりです。

//删除数据
$sql = "DELETE FROM `users` WHERE `name` = :name";
$name = 'Tom';
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':name', $name);
$stmt->execute()

このうち、$sql はデータを削除する SQL ステートメントです。 、パラメーター バインディングを使用する 特定の方法で SQL インジェクション攻撃を回避できます。 bindValue() メソッドは、パラメータを指定された名前のプレースホルダーにバインドし、その後、execute() メソッドを呼び出してクエリをデータベースに送信します。

  1. データのクエリ

PDO を使用してデータをクエリするコードは次のとおりです。

//查询数据
$sql = "SELECT * FROM `users` WHERE `age` > :age";
$age = 20;
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':age', $age);
$stmt->execute();
$rows = $stmt->fetchAll();

このうち、$sql はデータをクエリするための SQL ステートメントです。 、パラメーター バインディングを使用する 特定の方法で SQL インジェクション攻撃を回避できます。 bindValue() メソッドは、パラメータを指定された名前のプレースホルダーにバインドし、その後、execute() メソッドを呼び出してクエリをデータベースに送信します。 fetchAll() メソッドは、クエリ結果を多次元配列として返します。

PDO は、連想配列、数値配列、オブジェクトの 3 つのタイプの結果の取得をサポートしているため、結果をクエリするときは、フェッチ取得のタイプを設定する必要があります (例:

//查询并获取关联数组
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
 
//查询并获取数字数组
$rows = $stmt->fetchAll(PDO::FETCH_NUM);
 
//查询并获取对象数组
$rows = $stmt->fetchAll(PDO::FETCH_OBJ);

4)。 PDO の実装 トランザクション処理

PDO はトランザクション処理をサポートしており、beginTransaction()、commit()、および rollback() メソッドを使用してトランザクションの送信およびロールバック操作を実装できます。

try {
    //开启事务
    $pdo->beginTransaction();
    //执行增删改操作语句
    $pdo->exec($sql1);
    $pdo->exec($sql2);
    $pdo->exec($sql3);
    //提交事务
    $pdo->commit();
} catch (Exception $e) {
    //回滚事务
    $pdo->rollback();
}

以上は、PDO を使用してデータベースを操作するための基本的な説明です。PDO を使用してデータベースを操作する場合は、注意する必要があるいくつかの点があります。バインディングにより SQL インジェクション攻撃を回避できます。

    例外を簡単にキャッチできるように、PDO 例外のエラー モードを EXCEPTION に設定します。
  1. prepare() メソッドを使用して操作ステートメントを実行すると、結果セットをキャッシュしてクエリ効率を向上させることができます。
  2. 前処理されたステートメントとデータ バインディングにより、ステートメントの分析と最適化の繰り返し作業が回避され、クエリ効率が向上します。
  3. トランザクション処理を有効にすると、データの整合性と一貫性が保証されます。
  4. つまり、PDO を使用してデータベースを操作することは比較的便利で効果的な方法であり、Web アプリケーションに強力なデータベース アクセス機能を提供できます。

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

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
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

PHPセッションからデータをどのように取得しますか?PHPセッションからデータをどのように取得しますか?May 01, 2025 am 12:11 AM

toretrievedatafrompsession、Startthessession withsession_start()andAccessvariablesshe $ _SessionArray.forexample:1)Startthessession:session_start()

セッションを使用してショッピングカートを実装するにはどうすればよいですか?セッションを使用してショッピングカートを実装するにはどうすればよいですか?May 01, 2025 am 12:10 AM

セッションを使用して効率的なショッピングカートシステムを構築する手順には、次のものがあります。1)セッションの定義と機能を理解します。セッションは、リクエスト全体でユーザーのステータスを維持するために使用されるサーバー側のストレージメカニズムです。 2)ショッピングカートに製品を追加するなど、基本的なセッション管理を実装します。 3)製品の量管理と削除をサポートし、高度な使用状況に拡大します。 4)セッションデータを持続し、安全なセッション識別子を使用することにより、パフォーマンスとセキュリティを最適化します。

PHPでインターフェイスをどのように作成して使用しますか?PHPでインターフェイスをどのように作成して使用しますか?Apr 30, 2025 pm 03:40 PM

この記事では、PHPでインターフェイスを作成、実装、および使用する方法について説明し、コード組織と保守性の利点に焦点を当てています。

crypt()とpassword_hash()の違いは何ですか?crypt()とpassword_hash()の違いは何ですか?Apr 30, 2025 pm 03:39 PM

この記事では、PHPのCrypt()とpassword_hash()の違いについて、パスワードハッシュの違いについて説明し、最新のWebアプリケーションの実装、セキュリティ、および適合性に焦点を当てています。

PHPのクロスサイトスクリプト(XSS)をどのように防ぐことができますか?PHPのクロスサイトスクリプト(XSS)をどのように防ぐことができますか?Apr 30, 2025 pm 03:38 PM

記事では、入力検証、出力エンコード、およびOWASP ESAPIやHTML浄化器などのツールを使用して、PHPのクロスサイトスクリプト(XSS)を防止します。

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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

Safe Exam Browser

Safe Exam Browser

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境