ホームページ >バックエンド開発 >PHPチュートリアル >PDO の使い方学習ノート_PHP チュートリアル

PDO の使い方学習ノート_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 16:55:44829ブラウズ

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('データベースへの接続エラー。');

}

2. ドライバーの属性

(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 ステートメントを送信します

コードは次のとおりですコードをコピー

bindParam()のパラメータは以下の7種類がありますので記述する必要はありません

PDO::PARAM_INT

PDO::PARAM_STR

PDO::PARAM_BOOL

PDO::PARAM_NULL

PDO::PARAM_LOB: ラージ オブジェクト データ型

PDO::PARAM_STMT: PDO ステートメントのタイプ

PDO::PARAM_INPUT_OUTPUT: ストアド プロシージャで使用されるデータ型

2. ステップ 3:

例:

$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() を使用して接続を閉じることができないことを意味します。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/631647.html技術記事 1. 基本概念 1. PDO:PHP Data Objectの略。 PDO 拡張クラス ライブラリは、PHP 用の軽量で一貫したインターフェイスを定義し、データ アクセス抽象化レイヤーを提供するため、
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。