PHP5のPDOクラスの詳細説明

May 19, 2018 am 09:14 AM
php php5

この記事では主に PHP5 の PDO クラスの詳細な説明を紹介します。興味のある方はぜひ参考にしてください。

■PDOとは? POD (PHP Data Object) 拡張機能は PHP5 で追加されました。PHP6 では、データベースへの接続にデフォルトで PDO が使用されます。PHP6 では、PDO 以外の拡張機能がすべて削除されます。この拡張機能は、データベースにアクセスするための PHP 組み込みクラス PDO を提供し、異なるデータベースが同じメソッド名を使用してデータベース接続の不一致の問題を解決します。 Windows での開発用に構成しました。 ■PDO の目標は、さまざまな RDBMS ライブラリの共通機能を統合する、軽量で明確で便利な API を提供することですが、より高度な機能を排除するものではありません。
PHP スクリプトを介して、オプションで高度な抽象化/互換性を提供します。

■PDOの特徴:

パフォーマンス。 PDO は、既存のデータベースのスケーリングの成功と失敗について最初から学びました。 PDO のコードはまったく新しいため、PHP 5 の最新機能を活用するためにパフォーマンスをゼロから再設計する機会があります。
能力。 PDO は、RDBMS の固有の機能に簡単にアクセスできるようにしながら、基盤として一般的なデータベース機能を提供するように設計されています。
シンプル。 PDO は、データベースの操作を簡単にするように設計されています。 API はコードに強制的に組み込まれることはなく、各関数呼び出しが何を行うのかを明確にします。
実行時に拡張可能。 PDO 拡張機能はモジュール式であるため、PHP プログラム全体を再コンパイルまたは再インストールすることなく、実行時にデータベース バックエンドのドライバーを読み込むことができます。たとえば、PDO_OCI 拡張機能は、PDO 拡張機能の代わりに Oracle データベース API を実装します。 MySQL、PostgreSQL、ODBC、Firebird 用のドライバーもあり、さらに多くのドライバーが開発中です。 [区切り文字]


■PDO のインストール
Windows での開発用の PDO 拡張機能は、Linux でインストールして設定したい場合は、他の場所を参照してください。
バージョン要件: php5.1 以降のバージョンはプログラム パッケージにすでに含まれています。php5.0.x は pecl.php.net からダウンロードし、拡張ライブラリ (PHP が保存されているフォルダーの ext フォルダー) に配置する必要があります。次に、マニュアルには 5.0 より前のバージョンでは PDO 拡張機能を実行できないと記載されています。設定:
pdo をサポートするように php.ini 設定ファイルを変更します (php.ini を理解していない場合は、phpinfo() 関数を呼び出すときに表示される php.ini を変更する必要があることをまず明確にしてください)。 extension=php_pdo.dll の前のセミコロンは php 設定ファイルのコメント記号です。この拡張子は必須です。
;extension=php_pdo.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_informix.dll
;extension=php_pdo_mssql.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dllがあります。
;拡張子= php_pdo_oci8。 dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll 各拡張子に対応するデータベースは次のとおりです:
ドライバー名 サポートされているデータベース
PDO_DBLIB FreeTDS / Microsoft SQL Server / Sybase
PDO_FIREBIRD Firebird /Interbase 6
PDO_INFORMIX IBM Informix Dynamic Server
PDO_MYSQL MySQL 3.x/4.x
PDO_OCI Oracle コール インターフェイス
PDO_ODBC ODBC v3 (IBM DB2、unixODBC および win32 ODBC)
PDO_PGSQL PostgreSQL
PDO_SQLITE SQLite 3 および SQLite 2
どのデータベースが必要ですか使用するには、対応する拡張子の前にあるコメント記号「;」を削除するだけです。

■PDO を使用する
ここでは、mysql がインストールされていることを前提としています。そうでない場合は、まずインストールする方法を見つけてください。私のバージョンは mysql5.0.22 ですが、MySQL 4.0.26 を使用している人もそれを使用できます。
★データベース接続:
次の例を使用してデータベースへの PDO 接続を分析します。


$dbms='mysql'; //データベース タイプ Oracle は ODI を使用します。開発者は別のデータベースを使用します。これを変更すると、多くの関数を覚える必要がなくなります
$host='localhost' //データベースホスト名
$dbName='test'; //データベース接続ユーザー名
; $pass=''; dsn, $user, $pass); //PDO オブジェクトの初期化とは、データベース接続オブジェクトの作成を意味します $dbh
echo "Connection success
";
/*検索を実行することもできますOperation

foreach ($dbh->query('Select * from FOO') as $row) {
using echo($GLOBAL);
} catch (PDOException $e) {
die ("エラー!: " . $e->getMessage() . "
");
}
//デフォルトでは、これは長くない接続です。長いデータベース接続が必要な場合は、最後のパラメータ: array(PDO::ATTR_PERSISTENT => true) は次のようになります:
$db = new PDO($dsn, $user, $pass, array(PDO:: ATTR_PERSISTENT => true));

?>


★データベースクエリ:
上記のクエリはすでに実行していますが、次のクエリも使用できます:
$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER); //属性を設定します
$rs = $db->query("Select * FROM foo");
$rs->setFetchMode(PDO) ::FETCH_ASSOC);
$result_arr = $rs->fetchAll();
print_r($result_arr);
?>


上記では setAttribute() メソッドを使用しているため、これら 2 つのパラメータを入れて、フィールドの名は強制的に大文字に変換されます。 PDO::setAttribute() のパラメーターは次のとおりです: PDO::ATTR_CASE: 以下で詳しく説明するように、列名を強制的にフォーマットします (2 番目のパラメーター):

PDO::CASE_LOWER: 列名を強制的に小文字にします

PDO::CASE_NATURAL: 列名は元の方法に従います。

PDO::CASE_UPPER: 列名を強制的に大文字にします。

PDO::ERRMODE_SILENT: エラー メッセージを表示しません。 、エラー コードのみを表示します。

PDO::ERRMODE_WARNING: 警告エラーを表示します。

PDO::ERRMODE_EXCEPTION: 例外をスローします。

PDO::ATTR_ORACLE_NULLS (ORACLE だけでなく、他のデータベースにも有効): )指定されたデータベースによって返される、php の NULL 値に対応する数値。

PDO::NULL_NATURAL: 変更なし。

PDO::NULL_EMPTY_STRING: 取得時に NULL が空の文字列に変換されます。 :ATTR_STATEMENT_CLASS: PDOStatement から派生したユーザー指定のステートメント クラスを設定します。永続的な PDO インスタンスでは使用できません。array(string classname, array(mixedconstructor_args)) が必要です。

PDO:: ATTR_AUTOCOMMIT (OCI、Firebird、MySQL で使用可能):すべてのステートメントを自動コミットするかどうか。

PDO::MYSQL_ATTR_USE_BUFFERED_QUERY (MySQL で利用可能): バッファされたクエリを使用します。

$rs->setFetchMode(例では PDO::FETCH_ASSOC) ) は PDOStatement::setFetchMode();戻り値の型の宣言。
以下があります:
PDO::FETCH_ASSOC -- 連想配列形式
PDO::FETCH_NUM -- 数値インデックス配列形式
PDO::FETCH_BOTH -- 両方の配列形式が使用可能で、これがデフォルトです
PDO::FETCH_OBJ - - - オブジェクトの形式では、以前の mysql_fetch_object() に似ています

戻り値の型宣言 (PDOStatement::メソッド名) の詳細については、マニュアルを参照してください。

★データの挿入、更新、削除、

$db->exec("Delete FROM `xxxx_menu` where mid=43");


上記の操作の簡単な要約:

クエリ操作は主に PDO ::query()、PDO::exec()、PDO::prepare()。
PDO::query() は主に記録された結果を返す操作、特に Select 操作に使用されます。
PDO::exec() は主に挿入、更新、削除などの結果セットを返さない操作に使用されます。返される結果は、現在の操作によって影響を受ける列の数です。
PDO::prepare() は主に前処理操作です。前処理で SQL ステートメントを実行するには $rs->execute() を使用する必要があります。このメソッドはパラメータをバインドすることができ、単純に説明することはできません。この記事を参照してください。

結果セットを取得する主な操作は、PDOStatement::fetchColumn()、PDOStatement::fetch()、PDOStatement::fetchALL() です。
PDOStatement::fetchColumn() は、フェッチ結果で指定された最初のレコードのフィールドです。デフォルトは最初のフィールドです。
PDOStatement::fetch() はレコードを取得するために使用され、
PDOStatement::fetchAll() はすべてのレコードを 1 つに取得するために使用されます。結果を取得するには、PDOStatement::setFetchMode を使用して結果セットのタイプを設定します。必須。

2 つの周囲の操作もあります。1 つは PDO::lastInsertId() と PDOStatement::rowCount() です。 PDO::lastInsertId() は最後の挿入操作を返し、主キー列の型は最後の自動インクリメント ID です。
PDOStatement::rowCount() は、主に PDO::query() および PDO::prepare() の Delete、Insert、および Update 操作の影響を受ける結果セットに使用されます。PDO::exec() には無効です。メソッドと選択操作。

関連する推奨事項:


PDO メソッドが mysql へのインジェクションを防止できる理由


PDO メソッドに基づいてデータベース操作の接続例を考える PHP フレームワーク

PHP での PDO トランザクション処理操作の例

以上がPHP5のPDOクラスの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles