ホームページ >バックエンド開発 >PHPチュートリアル >PDO の使い方学習ノート_PHP チュートリアル
1. 基本概念
1. PDO: PHP Data Objectの略。 PDO 拡張クラス ライブラリは、PHP 用の軽量で一貫したインターフェイスを定義します。これは、データ アクセス抽象化レイヤーを提供するため、どのようなデータベースが使用されているかに関係なく、一貫した関数を通じてクエリとデータを取得できます。
PDOは、さまざまなデータベースのアクセスインターフェースを統合する「データベースアクセス抽象化レイヤー」です。
2. データベース上の操作は PDO 拡張機能自体を使用して実行されるのではなく、異なるデータベース サーバーの特定の PDO ドライバーを使用してアクセスする必要があります。例: MYSQL (PDO_MYSQL)。 PDO パーツのリストは phpinfo() 関数で表示できます。
2.PDOのインストール
1. Linux: PHP をインストールするときに、configure コマンドに次のフラグを追加します。
–with-pdo-mysql=/usr/local/mysql ///usr/local/mysql は mysql のインストールディレクトリです2. Windows:
C:windows で php.ini ファイルを見つけます
(1) 開く: extension=php_pdo.dll
(2) 開く: extension=php_pdo_mysql.dll
3. PDOプロセスの使用
1. データベースに接続します
(1) PDOオブジェクトの作成
(2) PDOの動作属性を設定する(setattribute())
(3) 文字セットの設定 ($link->query(‘set names UTF8’))
2. SQL ステートメントを送信します
(1) SQL文の準備
(2) 送信実行
3. 結果を確認する
4. データベースに接続します
1. PDO オブジェクトを作成します:
(1)$link = 新しい PDO(DSN、ユーザー名、パスワード、ドライバーのプロパティ);
1) DSN: データ ソース名。使用する必要があるドライバーと使用するデータベースを定義するために使用されます。 mysql の DSN 形式: 「mysql:host=localhost;dbname=lamp30」
2) DSN を次のようなファイルに置くことができます: 'uri:file:///usr/local/dsn.txt'
3) PDO インスタンスの宣言時にエラーが発生すると、例外が自動的にスローされるため、オブジェクトの作成時に try...catch ステートメントを使用します。例:
コードをコピー | |
試してください{ $link = 新しい PDO('mysql:host=localhost;dbname=lamp30','root','111111'); }キャッチ(PDOException $e){ echo $e->getMessage(); exit('データベースへの接続エラー。'); }
|
(1) コンストラクターの第4引数に必要なオプションを配列(要素キーとして属性名、要素値として属性値)を渡すことができます。ドライバー属性がコンストラクターで定義されていない場合は、後で PDO クラスの setattribute() 関数を使用して各属性を定義できます。
(2) これらの属性についての中国語の説明は、本の P501 にあります。
3. 文字セットを設定します: $link->query(‘set names UTF8’)
5. SQL ステートメントを送信します
(1)$link->exec(): 追加、削除、変更を実行し、影響を受ける行数を返します。実行が失敗した場合は false または 0 を返します。
(2)$link->query(): クエリを実行し、PDOStatement 結果セット オブジェクトを返します。
6. クエリ結果
1. クエリ以外:
(1) $link->exec() の戻り値を直接使用して行数を変更します
(2)$link->lastInsertId() は、最後の INSERT コマンドによって生成された AUTO_INCREMENT 数値を返します
2. 前処理を参照してください
7. 前処理
1. ステップ 2: SQL ステートメントを送信します
コードをコピー | |
$stmt = $link->prepare(‘select * from user where id=:id’); $stmt->bindparam(‘:id’, $id, PDO::PARAM_INT); $id = 2; $stmt->execute();
|
コードは次のとおりです | コードをコピー |
$stmt = $link->query(‘select * from user’); (1) fetch()メソッド $pdoStat ->bindColumn(1, $id) //最初のパラメータには 1 から始まるインデックス値を指定できます $pdoStat ->bindColumn(‘name’, $name) //列名にすることもできます $pdoStat ->bindColumn('pass', $pass); while($row = $stmt ->fetch(PDO::FETCH_BOUND)){ $id をエコーします。' '; $name をエコーします。' '; echo $pass.’ } |
fetch() パラメータには 6 種類あります。マニュアルを参照してください。
setFetchMode() メソッドを使用してデフォルトのモードを設定できます。
(2) fetchall()メソッド
コードは次のとおりです | コードをコピー |
$result = $stmt ->fetchall(); foreach($result as $row){ echo $row[‘id’].' '; echo $row[‘name’].’ ’; echo $row[‘pass’].' } |
Fetchall() パラメータは fetch() と同じです。
8. トランザクション処理
1. 自動送信をオフにする (ドライバーのプロパティで変更します)
2. トランザクションを開く
3. トランザクションのコミット/ロールバック
4. 自動送信をオンにする
例:
コードは次のとおりです | コードをコピー |
$link = 新しい PDO(‘mysql:host=localhost;dbname=lamp30’); //1 $link->setattribute(PDO::ATTR_AUTOCOMMIT, false); //2 $link->begintransaction(); $result = $link->exec('user(name,paa) 値に挿入('wsy','111')'); //3 if($result){ $link->commit(); }その他{ $link->rollback(); } //4 $link->setattribute(PDO::ATTR_AUTOCOMMIT, true); |
9. PDO オブジェクトのメンバーメソッド
1. $link->getattribute (属性名): ドライバー属性を取得します。
2. $link->setattribute (属性名、属性値): ドライバーの属性を設定します。
1) Oracle は空の文字列を NULL 値として返しますが、互換性を高めるために他のデータベースにはこの機能がないため $link->setattribute(PDO::ATTR_ORACLE_NULLS,PDO::NULL_EMPTY_STRING,);
2) エラーを表示するには、静的、警告メッセージ、例外の 3 つの方法があります
3. $link->errorcode(): エラーコードを取得します。
1) setattribute 関数がエラー表示モードを static に設定している場合、エラーが発生したときにこの関数を呼び出してエラー番号を表示する必要があります。
4. $link->errorinfo(): エラー情報(配列)を取得します。
1) setattribute 関数がエラー表示モードを static に設定している場合、エラーが発生したときにこの関数を呼び出してエラー メッセージを表示する必要があります。
5. $link->lastinsertid(): テーブルに最後に挿入されたデータの主キー値を取得します (複数のデータが同時に挿入された場合は、最初に挿入された行の ID を返します)。
6. $link->prepare(): 準備された SQL ステートメントを送信し、PDOStatement オブジェクトを返します。
7. $link->begintransaction(): トランザクションを開きます。
8. $link->commit(): トランザクションを送信して SQL を実行します。
9. $link->rollback(): トランザクションをロールバックします。
10.エラーモード
1. 静的モード:
コードは次のとおりです | コードをコピー |
$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT) |
(1) デフォルトモード。エラー発生時に何も操作は実行されず、PDO はエラーコードを設定するだけです。
(2) エラーを表示するには、errorCode() と errorInfo() を呼び出すことができます。PDO クラスと PDOStatement クラスの両方に、これら 2 つのメソッドがあります。
2. 警告モード:
コードは次のとおりです | コードをコピー |
$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING) |
(1) このモードではエラー コードを設定することに加えて、PDO は PHP の従来の E_WARNING メッセージも発行します。
(2) これは、mysql と mysqli がエラーを表示する方法です。
3. 異常モード:
コードは次のとおりです | コードをコピー |
$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION) |
(1) このモードではエラー コードを設定することに加えて、PDO は PDOException をスローし、エラー コードとエラー情報を反映するようにそのプロパティを設定します。
(2) 例外によりスクリプトが終了した場合、トランザクションは自動的にロールバックされます。
(3) PDO はこのモードの使用を推奨します。
11. 持続的な接続
コードは次のとおりです | コードをコピー |
$link->setAttribute(PDO::ATTR_PERSISTENT, true); |
永続的な接続とは、スクリプトの実行が終了しても接続が自動的に切断されず、$link->close() を使用して接続を閉じることができないことを意味します。