ホームページ  >  記事  >  バックエンド開発  >  PHP PDO関数ライブラリ詳細解説、PDO関数ライブラリ詳細解説_PHPチュートリアル

PHP PDO関数ライブラリ詳細解説、PDO関数ライブラリ詳細解説_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-12 08:58:07721ブラウズ

PHP PDO関数ライブラリ詳細説明、PDO関数ライブラリ詳細説明

PDO は、さまざまなデータベースのアクセス インターフェイスを統合する「データベース アクセス抽象化レイヤー」です。mysql や mysqli の関数ライブラリと比較して、PDO は ADODB や MDB2 と比較して、より効率的にクロスデータベースを使用できます。 。現時点では、「データベース抽象化レイヤー」の実装には長い道のりがあります。PDO などの「データベース アクセス抽象化レイヤー」を使用するのが良い選択です。

PDO には 3 つの事前定義クラスが含まれています

PDO には、PDO、PDOStatement、PDOException という 3 つの事前定義クラスが含まれています。

1.PDO

PDO->beginTransaction() — ロールバックの開始点をマークします
PDO->commit() — ロールバックの終了点をマークし、SQL を実行します
PDO->rollBack() — ロールバックを実行します
PDO->__construct () — PDO リンク データベースのインスタンスを作成します
PDO->errorCode() — エラー コードを取得します
PDO->errorInfo() — エラー情報を取得します
PDO->exec() — SQL ステートメントを処理し、影響を受けるエントリの数
PDO->getAttribute() — 「データベース接続オブジェクト」の属性を取得します
PDO->getAvailableDrivers() — 有効な PDO ドライバー名を取得します
PDO->lastInsertId() — 書き込みを取得します入力された最後のデータの主キー値
PDO->prepare() — 「クエリ オブジェクト」を生成します
PDO->query() — SQL ステートメントを処理し、「PDOStatement」を返します
PDO->quote () — SQL の文字列に引用符を追加します
PDO->setAttribute() — 「データベース接続オブジェクト」の属性を設定します

詳しい説明 1) PDOでのデータベース接続
$dsn = 'mysql:dbname=ent;host=127.0.0.1';
$user = 'root';
$password = '123456';
try {
$dbh = new PDO($dsn, $user, $password, array(PDO::ATTR_PERSISTENT => true));
$dbh->query('set names utf8;');
foreach ($dbh->query) ('SELECT * from tpm_juese') as $row) {
print_r($row);
}
} catch (PDOException $e) {
echo '接続に失敗しました: ' $e->getMessage();
}

多くの Web アプリケーションは、データベースへの永続的な接続を使用して最適化されます。永続接続はスクリプトの終了時に閉じられず、別のスクリプトが同じ ID で接続を要求したときにキャッシュされ、再利用されます。
永続的な接続のキャッシュにより、スクリプトがデータベースと通信する必要があるたびに新しい接続をデプロイするリソースの消費を回避できるため、Web アプリケーションが高速になります。
上記の例の配列 (PDO::ATTR_PERSISTENT => true) は、接続タイプを永続接続に設定します。

詳細説明2) PDO内のトランザクション

PDO->beginTransaction()、PDO->commit()、PDO->rollBack()は、ロールバック機能をサポートしている場合に併用されます。 PDO->beginTransaction() メソッドは開始点をマークし、PDO->commit() メソッドはロールバックの終了点をマークして SQL を実行し、PDO->rollBack() はロールバックを実行します。
try {
$dbh = new PDO('mysql:host=localhost;dbname=test', 'root', ”);
$dbh->query('set names utf8;');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$dbh->beginTransaction();

$dbh->exec(”INSERT INTO `test`.`table` (`name` ,`age`)VALUES ('mick', 22);”);
$dbh->exec("INSERT INTO `test`.`table` (`name` ,`age`)VALUES ('lily', 29);");
$dbh->exec("INSERT INTO ` test`.`table` (`name` ,`age`)VALUES ('susan', 21);”);
$dbh->commit();

} catch (Exception $e) {

$dbh->rollBack();
echo "Failed: " . $e->getMessage();
}
?>
これで、PDO を介した接続が確立されました。 、クエリを展開する前に、PDO がトランザクションをどのように管理するかを理解する必要があります。これまでトランザクションに遭遇したことがない場合は、(ここで簡単に説明します:) トランザクションには 4 つの主要なプロパティがあります: 原子性、一貫性、分離性、耐久性 (ACID) 平易な言葉で言うと、トランザクション内のすべての作業が送信された場合、段階的に実行される場合でも、安全にデータベースに適用され、他の接続によって干渉されないようにする必要があります。リクエストでエラーが発生した場合、トランザクション作業を簡単かつ自動的にキャンセルすることもできます。

トランザクションの一般的な使用法は、バッチの変更を「保存」し、すぐに実行することです。これにより、更新効率が完全に向上するという利点があります。言い換えれば、トランザクションによりスクリプトが高速になり、より堅牢になる可能性があります (この利点を実現するには、トランザクションを正しく使用する必要があります)。

残念ながら、すべてのデータベースがトランザクションをサポートしているわけではないため、接続の確立時に PDO を「自動コミット」モードとみなされるモードで実行する必要があります。オートコミット モードは、データベースがトランザクションをサポートしているか、データベースがトランザクションをサポートしていないためにトランザクションがないかに関係なく、実行するすべてのクエリに独自の暗黙的なトランザクション処理があることを意味します。トランザクションが必要な場合は、PDO->beginTransaction() メソッドを使用してトランザクションを作成する必要があります。基礎となるドライバーがトランザクションをサポートしていない場合、PDOException がスローされます (例外処理の設定に関係なく、これは常に重大なエラー状態であるため)。トランザクション内では、トランザクション内のコードが正常に実行されたかどうかに応じて、PDO->commit() または PDO->rollBack() を使用してトランザクションを終了できます。

スクリプトが終了するか接続が閉じられるとき、未完了のトランザクションがまだある場合、PDO はそれを自動的にロールバックします。これは、スクリプトが予期せず終了した場合の安全な解決策です。トランザクションを明示的にコミットしない場合、スクリプトは何か問題が発生したものとみなし、データの安全性を確保するためにロールバックを実行します。

2.PDOステートメント

PDOStatement->bindColumn() — 列を PHP 変数にバインドします
PDOStatement->bindParam() — パラメータを指定された変数名にバインドします
PDOStatement->bindValue() — 値をパラメータにバインドします
PDOStatement ->closeCursor() — カーソルを閉じて、ステートメントを再度実行できるようにします。
PDOStatement->columnCount() — 結果セット内の列の数を返します。
PDOStatement->errorCode() — 関連する SQLSTATE を取得します。ステートメントハンドルの最後の操作を使用して
PDOStatement->errorInfo() — ステートメントハンドルの最後の操作に関連付けられた拡張エラー情報を取得します
PDOStatement->execute() — 準備されたステートメントを実行します
PDOStatement->fetch( ) — 結果セットから次の行をフェッチします
PDOStatement->fetchAll() — 結果セットのすべての行を含む配列を返します
PDOStatement->fetchColumn() — 結果セットの次の行から単一の列を返します
PDOStatement->fetchObject() — 次の行をフェッチし、オブジェクトとして返します。
PDOStatement->getAttribute() — ステートメント属性を取得します。
PDOStatement->getColumnMeta() — 結果セット内の列のメタデータを返します。
PDOStatement->nextRowset() — 複数行セット ステートメント ハンドル内の次の行セットに進みます
PDOStatement->rowCount() — 最後の SQL ステートメントの影響を受ける行数を返します
PDOStatement->setAttribute() —ステートメント属性を設定します
PDOStatement->setFetchMode() — このステートメントのデフォルトのフェッチ モードを設定します

3.PDO例外

PDO は 3 つの異なるエラー処理戦略を提供します。
1. PDO::ERRMODE_SILENT
これがデフォルトのモードです。 PDO は、ステートメント オブジェクトとデータベース オブジェクトに単純なエラー コードを設定します。エラーがステートメント オブジェクトの呼び出しによって引き起こされたかどうかを確認するには、PDO->errorCode() メソッドと PDO->errorInfo() メソッドを使用できます。 , そのオブジェクトに対して PDOStatement->errorCode() メソッドまたは PDOStatement->errorInfo() メソッドを使用して、エラー情報を取得できます。データベース オブジェクトの呼び出し時にエラーが発生した場合は、データベース オブジェクトでこれら 2 つのメソッドを呼び出す必要があります。
2. PDO::ERRMODE_WARNING
エラー コードの設定に加えて、PDO は従来の E_WARNING メッセージを発行します。この設定は、デバッグ時や、プログラムの流れを中断せずに何が問題になったのかだけを確認したい場合に便利です。
3. PDO::ERRMODE_EXCEPTION
エラー コードを設定するための添付ファイルとして、PDO は PDOException をスローし、エラー コードとエラー情報を反映するようにそのプロパティを設定します。この設定は、スクリプト内のエラー ポイントを効果的に「爆発」させ、コード内のエラーの可能性のある領域を迅速に示すため、デバッグ時にも非常に役立ちます。 (例外によってスクリプトが中止された場合、トランザクションは自動的にロールバックされることに注意してください。)
例外モードは、従来の PHP スタイルのエラー処理構造を使用する前よりも明確な構造を使用してエラーを処理できるため、非常に便利です。使用するコードが少なくなります。 Quiet モードを使用するよりもネスティングが可能で、各データベース アクセスの戻り値をより明示的に確認できます。
PHP の例外の詳細については、「例外」の章を参照してください。
PDO は SQL-92 SQLSTATE に基づいたエラー コード文字列を使用します。特定の PDO ドライバーは、独自のコードを適切な SQLSTATE コードにマップする必要があります。 PDO->errorCode() メソッドは、単一の SQLSTATE コードのみを返します。エラーに関するより具体的な情報が必要な場合、PDO には PDO->errorInfo() メソッドも用意されており、SQLSTATE コード、特定のデータベース ドライバーのエラー コード、および特定のデータベースのエラーの説明を含むメッセージを返すことができます。ドライバー。

// デフォルトのエラー表示レベルを変更します
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
?>

属性リスト:

PDO::PARAM_BOOL
ブール型を表します
PDO::PARAM_NULL
SQLのNULL型を表します
PDO::PARAM_INT
SQLのINTEGER型を表します
PDO::PARAM_STR
SQL型のSQL CHAR、VARCHARを表します
PDO ::PARAM_LOB
SQL のラージ オブジェクト タイプを表します。
PDO::PARAM_STMT
SQL のレコードセット タイプを表します。これはまだサポートされていません
PDO::PARAM_INPUT_OUTPUT
パラメータがストアド プロシージャの INOUT パラメータであることを指定します。この値と明示的な PDO::PARAM_* データ型をビット単位で OR します。
PDO::FETCH_LAZY
結果の各行をオブジェクトとして返します
PDO::FETCH_ASSOC
キー値を添字の結果セットとして含むクエリのみを返します。同じ名前のデータは 1 つだけを返します
PDO::FETCH_NAMED
キー値を添字として持つクエリの結果セットのみを返します、同じ名前のデータは配列の形式で返されます
PDO::FETCH_NUM
のみ数字を添字にした結果セットを返します クエリの結果セットを返します
PDO::FETCH_BOTH
キー値と数字を添字にしたクエリの結果セットを同時に返します
PDO::FETCH_OBJ
結果セットを返しますオブジェクトの形式で
PDO::FETCH_BOUND
PDOStatement::bindParam()を配置 PDOStatement::bindColumn()にバインドされた値は、代入後に変数名として返されます
PDO::FETCH_COLUMN
は、特定の列のみを意味します。結果セットの
PDO::FETCH_CLASS
は、結果セットがクラスの形式で返されることを意味します。
PDO:: FETCH_INTO
は、データを既存のクラスにマージして返すことを意味します
PDO::FETCH_FUNC
PDO::FETCH_GROUP
PDO::FETCH_UNIQUE
PDO::FETCH_KEY_PAIR
最初のキー値テーブルと次の数値テーブルテーブルの形式で返されます結果セット
PDO::FETCH_CLASSTYPE
PDO::FETCH_SERIALIZE
はデータをマージすることを意味します既存のクラスをシリアル化して戻します
PDO::FETCH_PROPS_LATE
PHP 5.2.0 以降で利用可能
PDO::ATTR_AUTOCOMMIT
true に設定 時間になると、PDO は自動的にコミッションの受け入れを停止し、実行を開始しようとします
PDO::ATTR_PREFETCH
アプリケーションが取得するデータ サイズを事前に設定します
PDO::ATTR_TIMEOUT
接続データベースのタイムアウト値を設定します
PDO::ATTR_ERRMODE
エラー処理モードを設定します
PDO::ATTR_SERVER_VERSION
読み取り専用属性、PDO 接続のサーバー側データベースのバージョンを示します
PDO::ATTR_CLIENT_VERSION
読み取り専用属性、PDO 接続のクライアント PDO ドライバーのバージョンを示します
PDO::ATTR_SERVER_INFO
読み取り専用属性、 PDO に接続されているサーバー
PDO::ATTR_CONNECTION_STATUS
PDO::ATTR_CASE
列形式の PDO::CASE_* のコンテンツによる操作
PDO::ATTR_CURSOR_NAME
ポインター名の取得または設定
PDO::ATTR_CURSOR
ポインターのタイプ。PDO は PDO::CURSOR_FWDONLY と PDO::CURSOR_FWDONLY をサポートするようになりました
PDO::ATTR_DRIVER_NAME
使用される PDO ドライバーの名前を返します
PDO::ATTR_ORACLE_NULLS
返された空の文字列を変換します SQL の NULL の既存の接続を取得します
PDO ::ATTR_PERSISTENT

PDO::ATTR_STATEMENT_CLASS
PDO::ATTR_FETCH_CATALOG_NAMES
返された結果セットでは、フィールド名の代わりにカスタム カタログ名を使用します。
PDO::ATTR_FETCH_TABLE_NAMES
返された結果セットではフィールド名の代わりにカスタム テーブル名を使用します。
PDO::ATTR_STRINGIFY_FETCHES
PDO::ATTR_MAX_COLUMN_LEN
PDO::ATTR_DEFAULT_FETCH_MODE
PHP 5.2.0以降で利用可能
PDO::ATTR_EMULATE_PREPARES
PHP 5.1.3以降で利用可能
PD O::ER RMODE_SILENT
エラーが発生する、デフォルト値です
PDO::ERRMODE_WARNING
エラーが発生したときにphp E_WARNINGメッセージを送信します
PDO::ERRMODE_EXCEPTION
エラーが発生したときにPDOExceptionをスローします
PDO::CASE_NATURAL
返信列のデフォルトの表示形式
PDO::CASE_LOWER
列名を強制的に小文字にする
PDO::CASE_UPPER
列名を強制的に大文字にする
PDO::NULL_NATURAL
PDO::NULL_EMPTY_STRING
PDO::NULL_TO_STRING
PDO::FETCH_ORI_NEXT
データの次の行を取得する結果セット内、ポインタがある場合のみ有効
PDO::FETCH_ORI_PRIOR
関数を使用する場合に有効 結果セット内のデータの前の行を取得する、ポインタ関数がある場合のみ有効
PDO::FETCH_ORI_FIRST
最初の行を取得結果セット内のデータの行、ポインタ関数がある場合のみ有効
PDO::FETCH_ORI_LAST
結果セット内のデータの最後の行を取得します、ポインタ関数がある場合のみ有効
PDO::FETCH_ORI_ABS
特定の値を取得結果セット内のデータの行、ポインター関数がある場合にのみ有効
PDO::FETCH_ORI_REL
結果セット内の現在の行を取得した後、特定の行のデータはポインター関数がある場合にのみ有効です
PDO:: CURSOR_FWDONLY
逆方向のみに使用できるポインタ操作オブジェクトを作成
PDO::CURSOR_SCROLL
ポインタ操作オブジェクトを作成し、その内容をPDO::FETCH_ORI_*に渡す
結果セットを制御する
PDO::ERR_NONE(文字列)
エラーを設定するエラーがない場合のメッセージ
PDO::PARAM_EVT_ALLOC
割り当てイベント
PDO::PARAM_EVT_FREE🎜割り当て解除イベント
PDO::PARAM_EVT_EXEC_PRE
プリペアドステートメントの実行を優先するイベントトリガー
PDO::PARAM_EVT_EXEC_POST
プリペアドステートメントの実行後にトリガーされるイベント
PDO::PARAM_EVT_ FETCH_PRE
ステートメントから結果をフェッチする前にトリガーされるイベントresultsset .
PDO::PARAM_EVT_FETCH_POST
resultset から結果を取得した後にトリガーされるイベント。
PDO::PARAM_EVT_NORMALIZE
バインドされたパラメーターの登録中にトリガーされ、ドライバーがパラメーター名を正規化できるようにするイベント。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1104655.html技術記事 PHP PDO 関数ライブラリの詳細説明、pdo 関数ライブラリの詳細説明 PDO は、さまざまなデータベースのアクセス インターフェイスを統合するデータベース アクセス抽象化レイヤーであり、mysql や mysqli の関数ライブラリと比較して、PDO はクロスデータを可能にします...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。