ホームページ >バックエンド開発 >PHPチュートリアル >PHP_PHP チュートリアルで PDO を使用する方法

PHP_PHP チュートリアルで PDO を使用する方法

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

この記事には PDO のインストールは含まれませんが、PDO の使用法を単に要約するだけです。

最初の PDO アプリケーションの構築を開始し、Web ドキュメント ディレクトリに pdo.php ファイルを作成します。

[php]

$dsn = "mysql:host=localhost;dbname=test"; $db = 新しい PDO($dsn, 'root', ''); $count = $db->e​​xec("INSERT INTO foo SET name = 'lix',gender='mail',time=NOW()"); エコー $カウント
$db = null
?>
$dsn = "mysql:host=localhost;dbname=test";
DSN (データ ソース) の構築に使用されます。内部の情報には、データベースの種類が mysql、ホスト アドレスが localhost、データベース名が test が含まれます。それだけです。データベースごとにデータソースの構築方法が異なります。

$db = 新しい PDO($dsn, 'root', '');
PDO オブジェクトを初期化します。コンストラクターの最初のパラメーターはデータ ソース、2 番目のパラメーターはデータベース サーバーに接続するユーザー、3 番目のパラメーターはパスワードです。

$count = $db->e​​xec("INSERT INTO foo SET name = 'lix',gender='mail',time=NOW()");

エコー $count;
正常に接続された PDO オブジェクトを呼び出してクエリを実行します。このクエリは、PDO::exec() メソッドを使用すると、レコードに影響する結果を返します。最後に、オブジェクト リソースを終了する必要があります:

$db = null;

デフォルトでは、これは長い接続ではありません。データベースへの長い接続が必要な場合は、array(PDO::ATTR_PERSISTENT => true) のように最後にパラメーターを追加する必要があります。 $db = 新しい PDO($dsn, 'root', '', array(PDO::ATTR_PERSISTENT => true));

データを取得したい場合
[php]
$rs=$db->query("SELECT * FROM foo"); foreach($rs->fetch() as $row){

print_r($row); }

?>

も使えます
[php]
$rs = $db->query("SELECT * FROM foo"); while($row = $rs->fetch()){
print_r($row); }
?>
すべてのデータを一度に取得します

[php]
$rs = $db->query("SELECT * FROM foo"); $result_arr = $rs->fetchAll(); print_r($result_arr); ?>
結果は次のようになります:

[php]
配列
(

[0] => 配列

(
[ID] = > 1
[0] => 1 [名前] = & gt; [1] => [性別] = > [2] => 男性
[時間] = & gt; 2006-10-28 23:14:23
[3] => 2006-10-28 23:14:23
)
}

内部のレコードを見てみましょう。デジタル インデックスと連想インデックスの両方が存在しますが、必要なのは連想インデックスだけです。

[php]
$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() メソッドは、PDO 属性を設定します。主な属性は、PDO::ATTR_CASE、PDO::ATTR_ERRMODE などです。ここで設定する必要があるのは、PDO::ATTR_CASE、つまり、関連するインデックスを使用する場合です。データセットを取得します。関連付けられたインデックスは大文字または小文字です。いくつかのオプションがあります:
PDO::CASE_LOWER -- 列名を強制的に小文字にする
PDO::CASE_NATURAL -- 列名はオリジナルの方法です
PDO::CASE_UPPER -- 列名を強制的に大文字にする

setFetchMode メソッドを使用して、結果セットを取得するための戻り値のタイプを設定します。同じタイプは次のとおりです。 PDO::FETCH_ASSOC -- 連想配列形式
PDO::FETCH_NUM -- 数値インデックス配列形式
PDO::FETCH_BOTH -- どちらも配列形式で使用でき、これがデフォルトです
PDO::FETCH_OBJ -- 前の mysql_fetch_object() と同様のオブジェクトの形式

もちろん、一般的には PDO::FETCH_ASSOC を使用します。具体的に何を使用するかは、必要に応じて異なります。他の取得タイプについては、マニュアルを参照してください。

上記のデータ取得方法に加えて、次のこともできます:

[php]
$rs = $db->prepare("SELECT * FROM foo"); $rs->execute(); while($row = $rs->fetch()){
print_r($row); }
?>
指定したレコードのフィールドの結果を取得したい場合は、PDOStatement::fetchColumn():
を使用できます。
[php]
$rs = $db->query("SELECT COUNT(*) FROM foo"); $col = $rs->fetchColumn(); エコー $col

?>
概要:

クエリ操作は主に PDO::query()、PDO::exec()、PDO::prepare() です。 PDO::query() は主に、記録された結果を返す操作、特に SELECT 操作に使用されます。PDO::exec() は主に、INSERT、UPDATE、DELETE などの結果セットを返さない操作に使用されます。結果は、現在の操作によって影響を受ける列の数を返します。 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() メソッドには無効ですおよび SELECT 操作。

【エラー処理】

1. オブジェクト指向のアプローチ

まず、オブジェクト指向のアプローチを使用して接続エラーなどに対処する方法を見てみましょう:

[php]
試してみてください{
$db = 新しい PDO('mysql:host=localhost;dbname=test', $user, $pass); $db = null

} キャッチ (PDOException $e) {

"エラー: " . $e->getMessage() "
"; 死ぬ(); }
?>
ここでは、PHP 5 のオブジェクト指向例外処理機能を使用します。例外が発生した場合、PDOException が初期化されて例外クラスが初期化されます。
PDOException例外クラスの属性構造:

[php]
クラス PDOException は例外を拡張します
{
Public $errorInfo = null; // エラー情報には PDO::errorInfo() または PDOStatement::errorInfo() を呼び出すことでアクセスできます
Protected $message; // 例外情報。Exception::getMessage() を使用してアクセスできます
Protected $code; // SQL ステータス エラー コード。Exception::getCode() を使用して
にアクセスできます。 }
?>
PHP 5 の組み込み例外処理クラス構造を簡単に見てみましょう:
[php]
クラス例外
{
// プロパティ
Protected $message = '不明な例外' // 例外メッセージ
; protected $code = 0 // ユーザー定義の例外コード
; 保護された $file; 保護された $line;
// メソッド
最終関数 getMessage(); // 例外メッセージを返す
最終関数 getCode(); // 例外コードを返す
Final function getFile(); // 例外が発生したファイル名を返します
Final function getLine(); // 例外が発生したコード行番号を返します
最終関数 getTrace() // backtrace() 配列
Final function getTraceAsString(); // 文字列にフォーマットされた getTrace() 情報
}
?>
同様に、コード内で getFile() と getLine() を適切に呼び出してエラーを特定し、デバッグをより便利にすることができます。

2. プロセス指向のアプローチ

[php]

$db = 新しい PDO('mysql:host=localhost;dbname=test', $user, $pass); $rs = $db->query("foo から aa,bb,cc を選択"); if ($db->e​​rrorCode() != '00000'){
Print_r($db->e​​rrorInfo()); 出る
}
$arr = $rs->fetchAll(); print_r($arr); $db = null
?>
PDO オブジェクトと PDOStatement オブジェクトには errorCode() メソッドと errorInfo() メソッドがあります。エラーがない場合、errorCode() は 00000 を返します。それ以外の場合は、いくつかのエラー コードが返されます。 errorInfo() は、PHP および MySQL で定義されたエラー コードとエラー情報を含む配列を返します。配列の構造は次のとおりです。
[php]
配列
(
[0] => 42S22
[1] => 1054
[2] => 「フィールドリスト」に不明な列「aaa」があります
)

各クエリの実行後の errorCode() の結果は最新であるため、エラー メッセージの表示を自分で簡単に制御できます。


Heda Li Xin のクレイジー コーディング ライフからの抜粋




http://www.bkjia.com/PHPjc/478395.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/478395.html

この記事では PDO のインストールについては説明しませんが、PDO の使用方法を簡単に要約します。 最初の PDO アプリケーションの構築を開始し、Web ドキュメント ディレクトリに pdo.php ファイルを作成します: [php] ?php $dsn = mysql:hos...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。