ホームページ  >  記事  >  バックエンド開発  >  PDO クラスを使用した Mysql_PHP チュートリアルのクエリ

PDO クラスを使用した Mysql_PHP チュートリアルのクエリ

WBOY
WBOYオリジナル
2016-07-13 17:18:431022ブラウズ

私の PHP 開発プロセスでは、データベースに mysql データベースを使用します。データベース関連の操作では、基本的に mysql_query や mysql_connect などの mysql 拡張機能を使用してデータベースに接続し、クエリを実行します。 , 個人的にデメリットだと感じたのは2つあり、1つは拡張性がない、つまりデータベースを変更したい場合に使用するPHP拡張機能が異なることです。開発プロセス中にデータベースを変更すると、同じデータベース関連の操作をすべてやり直す必要があります。2 つ目は、フィルタリング ステートメントが厳密でない場合、SQL インジェクションのリスクがあり、Web サイトが悪意のある攻撃を受ける可能性があります。制御不能。 mysql_real_escape_string() 関数はユーザーが送信した値をフィルタリングするために使用されますが、これにも欠陥があります。 PHP の PDO 拡張機能の prepare メソッドを使用すると、SQL インジェクションのリスクを効果的に回避できます。


1. PDO の紹介

PDO 拡張機能は、PHP がデータベースにアクセスするための軽量で一貫したインターフェイスを定義し、どのようなデータベースが使用されても、一貫した関数を通じてクエリとデータを取得できるようにするデータ アクセス抽象化レイヤーを提供します。 PDO は PHP5.1 でリリースされ、PHP5.0 の PECL 拡張機能でも使用できますが、以前の PHP バージョンでは実行できません。 mysql や mysqli と比較して、PDO はデータベース間の使用をより容易にします。


2. PDO のインストールと構成

php5.2.10では、phpにはデフォルトでpdoがインストールされています。

php.ini ファイルを開き、extension=php_pdo.dll という文を見つけて、前のコメント記号を削除して、Apache を再起動します。この文が見つからない場合は、自分で追加するか、システムがインストール中にダイナミック リンク ライブラリ ファイル .so を使用するかどうかを確認します。使用している場合は、php ディレクトリに conf.d フォルダがあります。 pdo の下の ini リンク ファイルに拡張子=pdo.so という文がある場合、PDO が有効になっていることを意味します。

PHP で PDO が有効になっているかどうかを確認するには、まず次の内容のスクリプトを作成します

れーれー
表示結果に以下の内容が含まれている場合は、PDO 拡張機能が有効になっています。


3. PDO オブジェクトを作成します

<?php
        phpinfo();
?>
パラメーター分析: 最初の必須パラメーターはデータ ソース名 DSN です。これは、特定のデータベースと使用する必要があるドライバーを定義するために使用されます。

たとえば、oracle サーバーと mysql サーバーを接続するための DSN 形式は次のとおりです。

ocl:dbname=//127.0.0.1:1521/mydb //Oracle サーバーの DSN、oci: をドライバープレフィックスとして、ホスト 127.0.0.1、ポート 1521、データベース mydb に接続します

mysql:host=127.0.0.1;dbname=testdb //Mysql サーバーの DSN に接続します。ドライバー プレフィックスとして mysql:、ホスト 127.0.0.1、データベース testdb

れーれー
4.PDO設定のプロパティ

1) PDO には 3 つのエラー処理方法があります。

? PDO::ERrmODE_SILENT はエラー メッセージを表示せず、エラー コードを設定するだけです
? PDO::ERrmODE_WARNING は警告エラーを表示します
? PDO::ERrmODE_EXCEPTION は例外をスローします

次のステートメントを使用して、例外をスローするエラー処理メソッドを設定できます。

__construct(string dsn[,string username [,string password [, array driver_options]]]);//pdo的构造方法
が PDO::ERrmODE_SILENT に設定されている場合、errorCode() または errorInfo() を呼び出すことでエラー情報を取得できます。もちろん、他の状況でも使用できます。

2) データベースが異なると、返されるフィールド名の大文字と小文字の処理が異なるため、PDO では、返されるフィールド名の上限と下限を決定するための PDO::ATTR_CASE 設定項目 (PDO::CASE_LOWER、PDO::CASE_NATURAL、PDO::CASE_UPPER を含む) を提供します。場合。

3) PDO::ATTR_ORACLE_NULLS タイプ (PDO::NULL_NATURAL、PDO::NULL_EmpTY_STRING、PDO::NULL_TO_STRING を含む) を設定して、データベースから返される NULL 値に対応する値を php で指定します。


5. 一般的な PDO メソッドとそのアプリケーション
PDO::query() は主に、記録された結果を返す操作、特に SELECT 操作に使用されます
PDO::exec() は主に、INSERT、UPDATE、その他の操作など、結果セットを返さない操作に使用されます
PDO::prepare() は主に前処理操作です。前処理で SQL ステートメントを実行するには $rs->execute() を使用する必要があります。このメソッドはパラメーターをバインドでき、比較的強力です (SQL インジェクションの防止はこれに依存します)。 PDO::lastInsertId() は最後の挿入操作を返します。主キー列の型は最後の自動インクリメント ID です
PDOStatement::fetch() はレコードを取得するために使用されます
PDOStatement::fetchAll() は、すべてのレコードセットをコレクションに取得します
PDOStatement::fetchColumn() は、フェッチ結果で指定された最初のレコードのフィールドです
PDOStatement::rowCount(): 主に PDO::query() および PDO::prepare() の DELETE、INSERT、および UPDATE 操作の影響を受ける結果セットに使用されます。PDO::exec() メソッドには無効です。そしてSELECT操作。


6. PDO 操作 MYSQL データベース インスタンス
りー

前処理方法:

リーリー

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/621626.html技術記事私のPHP開発プロセスでは、データベースはmysqlデータベースを使用しており、データベースに関連する操作は基本的にmysql_query、mysql_co...などのphpのmysql拡張関数を使用します
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。