ホームページ >バックエンド開発 >PHPチュートリアル >PHP での PDO_PHP の使用に関するチュートリアル

PHP での PDO_PHP の使用に関するチュートリアル

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

PDO の紹介
PDO は、さまざまなデータベース (MySQL、MSSQL、Oracle、DB2、PostgreSQL...) のアクセス インターフェイスを統合する「データベース アクセス抽象化レイヤー」であり、異なるデータベース間で簡単に切り替えることができるため、データベース間の移植を簡単に実現できます。

PDOドライバー


PDOドライバーと対応するデータベースリストをサポート
ドライバー名 対応するデータベースアクセス
PDO_DBLIB FreeTDS/Microsoft SQL Server/Sybase
PDO_FIREBIRD ファイアバード / Interbase 6
PDO_MYSQL MySQL
PDO_OCI オラクル
PDO_ODBC ODBC v3
PDO_PGSQL PostgreSQL
PDO_SQLITE SQLite

PDOのインストール
PDO は PHP 5.1 とともにリリースされました。つまり、5.1 より前のバージョンでは PDO がサポートされず、PHP が将来データベースを処理する際の第一の選択肢となります。

以下は PDO のインストールについて説明します:

1. Linux環境

Linux 環境で MySQL の PDO プログラム ドライバーのサポートを有効にするには、PHP (バージョン 5.1 以降) のソース コード パッケージをインストールするときに、configure コマンドに以下を追加する必要があります。

--with-pdo-mysql=/usr/local/mysql // "/usr/local/mysql" は MySQL サーバーのインストールディレクトリです

--with-pdo-mysql=/usr/local/mysql // "/usr/local/mysql" は MySQL サーバーのインストールディレクトリです
2. Windows環境

php.ini ファイルを次のように変更し、「;」(セミコロン:コメントを表します)を削除します。その前に!

;extension=php_pdo.dll // すべての PDO ドライバーによって共有される拡張子。これには

が必要です ;extension=php_pdo_mysql.dll // MySQL を使用するにはこの行を使用します
;extension=php_pdo_mssql.dll // MSSQL を使用するにはこの行を使用します
;extension=php_pdo.dll // すべての PDO ドライバーで共有される拡張子。これを含める必要があります
;extension=php_pdo_mysql.dll // MySQL を使用するにはこの行を使用します
;extension=php_pdo_mssql.dll // MSSQL を使用するにはこの行を使用します
php.ini ファイルを保存し、Apache サーバーを再起動し、phpinfo() 関数を確認します。次の図が表示されれば、インストールは成功です。



注: Windows 環境では、設定が成功せず、上記の画像が表示されない場合があります。この時点で、PHP インストール拡張機能内の php_pdo_mysql.dll、php_pdo.dll... およびその他のファイルを Windows のシステム インストール パスにコピーします。

PDO オブジェクトを作成する
PDOの構築手法のプロトタイプは以下の通りです:

__construct(string dsn [,string db_user [,string db_pwd [,array driver_options]]])

__construct(string dsn [,string db_user [,string db_pwd [,array driver_options]]]) パラメーターの説明:
1. dsn (データ ソース名): データ ソース名。使用するデータベースとドライバーを定義します。
a. MySQL データベースに接続するための DSN: mysql:host=localhost;dbname=test // ホスト名: localhost;

b. Oracle データベースに接続するための DSN: oci:dbname=//localhost:1521/test // ホスト名: localhost ポート: test

… DSN の詳細については、PHP マニュアルを参照してください

2. db_user: データベースのユーザー名

3. db_pwd: データベースのパスワード。
4. driver_options: 接続に必要なすべての追加オプションを指定するために使用される配列です

PDO は、接続に必要なすべての追加オプションを指定するために使用されます

オプション名説明 PDO が自動送信機能をオフにするかどうかを決定し、オフにするには FALSE を設定します PDO によって取得されたテーブルフィールド文字の大文字と小文字の変換を強制するか、列情報をそのまま使用しますエラー処理モードを設定する 接続が永続的な接続かどうかを決定します。デフォルトは FALSE、永続的な接続ではありません返された空の文字列を SQL NULL に変換しますアプリが事前に取得したデータサイズをKバイト単位で設定します タイムアウトまでの待機時間を設定します (秒単位) データベース固有のサーバー情報が含まれますデータベースサーバーのバージョン番号に関連する情報が含まれますデータベースクライアントのバージョン番号に関連する情報が含まれます タイムアウトまでの待機時間を設定します (秒単位)
説明 PDO::ATTR_AUTOCOMMIT
PDO::ATTR_CASE
PDO::ATTR_ERRMODE
PDO::ATTR_PERSISTENT
PDO::ATTR_ORACLE_NULLS
PDO::ATTR_PREFETCH
PDO::ATTR_TIMEOUT
PDO::ATTR_SERVER_INFO
PDO::ATTR_SERVER_VERSION
PDO::ATTR_CLIENT_VERSION
PDO::ATTR_CONNECTION_STATUS


PDOコンストラクターを呼び出す(データベースに接続)
{
を試してください $pdo = 新しい PDO('mysql:host=localhost;dbname=test', 'root', '1715544', array(PDO::ATTR_PERSISTENT=>true)); } キャッチ (PDOException $e) {
exit('データベース接続に失敗しました。エラー メッセージ:'. $e->getMessage()); }
?>
試してみてください{
$pdo = 新しい PDO('mysql:host=localhost;dbname=test', 'root', '1715544', array(PDO::ATTR_PERSISTENT=>true));
} キャッチ (PDOException $e) {
exit('データベース接続に失敗しました。エラー メッセージ:'. $e->getMessage());
}
?>

PDO オブジェクトのメンバーメソッド

PDO オブジェクトのメンバーメソッド



メソッド名説明getAttribute()setAttribute()エラーコード()エラー情報()実行()クエリ()引用() lastInsertId()準備()getAvailableDrivers()beginTransaction()コミット()ロールバック()

PDO を使用して SQL ステートメントを実行する

1. PDO::exec() メソッドを使用します

PDO::exec() メソッドは主に SQL の INSERT、UPDATE、DELETE で使用され、影響を受ける行の数を返します


Date_default_timezone_set('PRC'); header('Content-Type:text/html;Charset=utf-8'); {
を試してください $pdo = 新しい PDO('mysql:host=localhost;dbname=test', 'root', '1715544'); $pdo->setAttribute(PDO::ATTR_PERSISTENT, true); // データベース接続を永続接続に設定します
; $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION) // セットアップでエラーがスローされます
$pdo->setAttribute(PDO::ATTR_ORACLE_NULLS, true); // 文字列が空の場合に設定され、SQL で NULL に変換されます
$pdo->query('SET NAMES utf8') //データベースエンコーディングを設定します
} キャッチ (PDOException $e) {
exit('データベース接続エラー、エラー メッセージ:'. $e->getMessage()); }
$addTime = date('Y-m-d H:i:s', time()); $sql = "INSERT INTO think_user(userName,email,age,addTime) VALUES ('酒井法子','jiujinfazi@sina.com.cn','28','{$addTime}')"; $row = $pdo->exec($sql); If ($row) {
echo '正常に追加されました'
; } その他 {
「追加に失敗しました」をエコーし​​ます
}
?>
date_default_timezone_set('PRC');
header('Content-Type:text/html;Charset=utf-8');
試してみてください{
$pdo = 新しい PDO('mysql:host=localhost;dbname=test', 'root', '1715544');
$pdo->setAttribute(PDO::ATTR_PERSISTENT, true); //データベース接続を永続接続として設定します
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION) // エラーをスローするように設定します
$pdo->setAttribute(PDO::ATTR_ORACLE_NULLS, true); //文字列が空の場合に設定され、SQL で NULL に変換されます
$pdo->query('SET NAMES utf8') // データベースのエンコーディングを設定します
} キャッチ (PDOException $e) {
exit('データベース接続エラー、エラー メッセージ:'. $e->getMessage());
}
$addTime = date('Y-m-d H:i:s', time());
$sql = "INSERT INTO think_user(userName,email,age,addTime) VALUES ('酒井法子','jiujinfazi@sina.com.cn','28','{$addTime}')";
$row = $pdo->exec($sql);
if ($row) {
echo '正常に追加されました';
} その他 {
echo '追加に失敗しました';
}
?>
2. PDO::query() メソッドを使用します


PDO::query() メソッドは、SQL の SELECT クエリで使用されます。このメソッドが正常に実行されると、PDOStatement オブジェクトが返されます。 rowCount() メソッドを使用して、影響を受ける行の数を返します

header('Content-Type:text/html;Charset=utf-8'); {
を試してください $pdo = 新しい PDO('mysql:host=localhost;dbname=test', 'root', '1715544'); $pdo->setAttribute(PDO::ATTR_PERSISTENT, true); // データベース接続を永続接続に設定します
; $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION) // セットアップでエラーがスローされます
$pdo->setAttribute(PDO::ATTR_ORACLE_NULLS, true); // 文字列が空の場合に設定され、SQL で NULL に変換されます
$pdo->query('SET NAMES utf8') //データベースエンコーディングを設定します
} キャッチ (PDOException $e) {
exit('データベース接続エラー、エラー メッセージ:'. $e->getMessage()); }
$sql = "think_user からユーザー名、メールアドレス、年齢、追加時刻を選択"; {
を試してください $result = $pdo->query($sql); foreach ($result as $row) {
echo $row['userName'] . $row['email'] . "t" .$row['addTime'] '
'; }
echo '合計'. $result->rowCount() .'Bar'; } キャッチ (PDOException $e) {
exit($e->getMessage()); }
?>
header('Content-Type:text/html;Charset=utf-8');
試してみてください{
$pdo = 新しい PDO('mysql:host=localhost;dbname=test', 'root', '1715544');
$pdo->setAttribute(PDO::ATTR_PERSISTENT, true); //データベース接続を永続接続として設定します
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION) // エラーをスローするように設定します
$pdo->setAttribute(PDO::ATTR_ORACLE_NULLS, true); //文字列が空の場合に設定され、SQL で NULL に変換されます
$pdo->query('SET NAMES utf8') // データベースのエンコーディングを設定します
} キャッチ (PDOException $e) {
exit('データベース接続エラー、エラー メッセージ:'. $e->getMessage());
}
$sql = "think_user からユーザー名、電子メール、年齢、追加時刻を選択";
試してみてください{
$result = $pdo->query($sql);
foreach ($result as $row) {
echo $row['userName'] . $row['email'] . "t" .$row['addTime'] '
';
}
echo 'Total'. $result->rowCount() .'Bar';
} キャッチ (PDOException $e) {
exit($e->getMessage());
}
?>


準備されたステートメントの PDO サポート

Lee.さんのコラムより抜粋



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

www.bkjia.com

tru​​e

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

PDO の概要 PDO は、さまざまなデータベース (MySQL、MSSQL、Oracle、DB2、PostgreSQL) のアクセス インターフェイスを統合する機能を備えており、異なるデータベース間で簡単に転送できます。
説明
「データベース接続オブジェクト」のプロパティを取得する
「データベース接続オブジェクト」のプロパティを設定する
エラーコードを取得する
エラーメッセージを取得する
SQL ステートメントを処理し、影響を受ける行数を返します
SQL ステートメントを処理し、「PDOStatement」オブジェクトを返します
SQL の文字列に引用符を追加する
テーブルに挿入された最後のデータの主キー値を取得します
SQL ステートメントの実行準備を担当します
有効な PDO ドライブ名を取得する
トランザクションを開始し、ロールバックの開始点をマークします
トランザクションを送信して SQL を実行する
トランザクションをロールバックする
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。