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 ステートメントの実行
データベースに接続したら、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()
メソッドを実行してトランザクションをロールバックします。
- SQL ステートメントを実行するとき、変数を使用して SQL ステートメントを構築する必要がある場合があります。たとえば、次のとおりです。 SQL インジェクションのリスクがあるため、準備されたステートメントを使用する必要があります。 PDO は、プリペアド ステートメントを実装するための
メソッドと
bindParam() メソッドを提供します。例: <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>
上記のコードでは、プリペアド ステートメントを使用して次のことを行います。 :name
はプレースホルダーとして使用されます。実行中、
は bindParam()
メソッドを通じて :name
にバインドされます。 , 実行すると、:name
が実際の変数値に置き換えられ、SQL インジェクションのリスクが回避されます。 デバッグ スキル
- 開発プロセスでは、SQL ステートメントの実行結果をデバッグする必要がよくあります。 PDO は、エラー情報を取得するための
- errorInfo() メソッドを提供します。例:
$name = "Tom"; $stmt = $dbh->query("SELECT * FROM users WHERE name='$name'");
上記のコードでは、クエリが失敗した場合、errorInfo()
メソッドは次のようになります。エラー情報を取得して画面に出力するために呼び出されます。
概要
- この記事では、データベースへの接続、SQL ステートメントの実行、結果セットの処理など、PDO を使用してデータベースを操作する PHP の方法とテクニックを紹介します。 。 PDO を使用すると、さまざまなデータベース管理システムに接続でき、高品質の Web アプリケーションの開発に役立つ豊富なインターフェイスが提供されます。
以上がPDO を使用してデータベースを操作するための PHP の方法とテクニックの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

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

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

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

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

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

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

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


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

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

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

ホットトピック









