■pdoとは? pod (php データ オブジェクト) 拡張機能は 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 が保存されているフォルダーの拡張子ライブラリに配置する必要があります。フォルダにあります。マニュアルには、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
;extension=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 call interface |
pdo_odbc | odbc v3 (ibm db2, unixodbc and win32 odbc) |
pdo_pgsql | postgresql |
pdo_sqlite | sqlite 3 and sqlite 2 |
ここでは、mysql がインストールされていることを前提としています。そうでない場合は、まずインストールする方法を見つけてください。私の場合は mysql5.0.22 を使用しており、暗い夜に通りかかる人は mysql 4.0.26 を使用しています。 。 ★データベース接続:
次の例を使用して、データベースへの PDO 接続を分析します。
$dbms='mysql'; //データベース タイプ oracle は odi を使用します。開発者が別のデータベースを使用する場合、これを変更するだけでよく、それほど多くのことを覚える必要はありません。 function
";/*検索操作を実行することもできます foreach ($dbh->query('select * from foo') as $row) {print_r($row) //これらの値を確認するには echo($global); */$dbh = null;} catch (pdoException $e) {die ("error!: " . $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); ?> |
$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::attr_errmode: エラー プロンプト。
pdo::errmode_silent: エラー情報は表示されず、エラー コードのみが表示されます。
pdo::errmode_warning: 警告エラーを表示します。
pdo::errmode_Exception: 例外をスローします。
pdo::attr_oracle_nulls (Oracle だけでなく、他のデータベースにも有効):) データベースから返される null 値に対応する値を php で指定します。
pdo::null_natural: 変更なし。
pdo::null_empty_string: 空の文字列は null に変換されます。
pdo::null_to_string: null は空の文字列に変換されます。
pdo::attr_stringify_fetches: フェッチに bool が必要な場合、数値を文字列に変換します。
pdo::attr_statement_class: pdostatement から派生したユーザー指定のステートメント クラスを設定するには、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 -- 連想配列形式
$db->exec("delete from `xxxx_menu` where mid=43"); |
$db->exec("mid=43 の `xxxx_menu` から削除"); |
//http://www.ibm.com/developerworks/cn/db2/library/techarticles/dm-0505furlong/index.html からの例
|
$dbms='mysql'; //数据库类型 oracle 用odi,对于开发者来说,使用不同的数据库,只要改这个,不用记住那么多的函数了 $host='localhost'; //数据库主机名 $dbname='test'; //使用的数据库 $user='root'; //数据库连接用户名 $pass=''; //对应的密码 $dsn="$dbms:host=$host;dbname=$dbname"; class db extends pdo { public function __construct(){ try { parent::__construct("$globals[dsn]", $globals['user'], $globals['pass']); } catch (pdoexception $e) { die("error: " . $e->__tostring() . " "); } } public final function query($sql){ try { return parent::query($this->setstring($sql)); }catch (pdoexception $e){ die("error: " . $e->__tostring() . " "); } } private final function setstring($sql){ echo "我要处理一下$sql"; return $sql; } } $db=new db(); $db->setattribute(pdo::attr_case, pdo::case_upper); foreach ($db->query('select * from xxxx_menu') as $row) { print_r($row); } $db->exec('delete from `xxxx_menu` where mid=43'); ?> |
");}}public Final function query($sql){try {returnparent:: query($this->setstring($sql));}catch (pdoException $e){die("error: " . $e->__tostring() . "
}}プライベート最終関数 setstring($sql){echo "$sql を処理したい";return $sql; }}$db=new db();$db->setattribute(pdo::attr_case, pdo::case_upper);foreach ($db->query('select * from xxxx_menu') as $row) {print_r($row);}$db->exec('delete from `xxxx_menu` wheremid=43'); テーブル>
4.php マニュアル
★ この時点で、pdo を介して mysql に接続しました。クエリを発行する前に、pdo がトランザクションをどのように管理するかを理解する必要があります。これまでトランザクションに触れたことがない場合は、まずトランザクションの 4 つの特性、つまりアトミック性、一貫性、分離性、耐久性、つまり Acid を理解する必要があります。平たく言えば、トランザクション内で実行されるすべての作業は、それが段階的に実行される場合でも、作業がデータベースに安全に適用され、作業の送信中に他の接続からのリクエストの影響を受けないことが保証されます。 。 影響。トランザクション作業はリクエストに応じて (まだコミットしていない場合) 自動的に取り消すことができるため、スクリプトでのエラー処理がはるかに簡単になります。 トランザクションは通常、変更のバッチを蓄積し、それらを同時に有効にすることによって実装されます。この利点は、これらの更新の効率を大幅に向上できることです。言い換えれば、トランザクションによってスクリプトが高速化され、潜在的により堅牢になる可能性があります (ただし、そのような利点を得るにはトランザクションを正しく使用する必要があります)。 残念ながら、すべてのデータベースがトランザクションをサポートしているわけではありません (mysql5 はトランザクションをサポートしていますが、mysql4 は知りません)。そのため、最初に接続が開かれたときに、pdo をいわゆる「自動コミット」モードで実行する必要があります。オートコミット モードは、データベースがトランザクションをサポートしている場合は、実行するすべてのクエリに独自の暗黙的なトランザクションがあり、データベースがトランザクションをサポートしていない場合は、すべてのクエリにそのようなトランザクションが存在しないことを意味します。トランザクションが必要な場合は、 pdo::begintransaction() メソッドを使用してトランザクションを開始する必要があります。基礎となるドライバーがトランザクションをサポートしていない場合、pdoException がスローされます (エラー処理設定に関係なく、これは常に致命的なエラー状態です)。トランザクション内で実行中のコードが成功したかどうかに応じて、トランザクション内で pdo::commit() または pdo::rollback() を使用してトランザクションを終了できます。 スクリプトが終了するとき、または接続が閉じられようとするときに、未処理のトランザクションがある場合、pdo はトランザクションを自動的にロールバックします。これは、スクリプトが異常終了した場合に不整合を回避するための安全対策です。トランザクションが明示的にコミットされていない場合は、どこかで不整合が発生すると想定されるため、データのセキュリティを維持するためにロールバックが実行されます。 この記事へのリンク http://www.cxybl.com/html/wlbc/Php/20120531/27131.html
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事
アサシンのクリードシャドウズ:シーシェルリドルソリューション
4週間前ByDDD
Atomfallのクレーンコントロールキーカードを見つける場所
4週間前ByDDD
<🎜>:Dead Rails-すべての課題を完了する方法
1 か月前ByDDD

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

ホットトピック
Gmailメールのログイン入り口はどこですか?
7719
15


Java チュートリアル
1641
14


CakePHP チュートリアル
1396
52


Laravel チュートリアル
1289
25


PHP チュートリアル
1233
29

