query('select *from user');" を通じてクエリを実行し、結果セット オブジェクトを返します。"/> query('select *from user');" を通じてクエリを実行し、結果セット オブジェクトを返します。">
#このオペレーティング システム環境: Linux5.18.14 システム、Dell G3 コンピューター。pdo in php は、php 用の軽量で一貫性のあるインターフェイスを定義できる拡張クラス ライブラリです。その使用法は次のとおりです: 1. php サンプル ファイルを作成します。2. 「try{$link = new PDO」を通じて(.);}catch(PDOException $e){...}" で pdo オブジェクトを作成します。 3. "$link->query('select *from user');" を通じてクエリを実行し、結果を返します。オブジェクトを設定するだけです。
1. 基本概念
1. PDO: PHP Data Object の略称。 PDO 拡張クラス ライブラリは、PHP 用の軽量で一貫したインターフェイスを定義します。これは、データ アクセス抽象化レイヤーを提供するため、どのようなデータベースが使用されているかに関係なく、一貫した関数を通じてクエリとデータを取得できます。 PDO は、さまざまなデータベースのアクセス インターフェイスを統合する「データベース アクセス抽象化レイヤー」です。 2. データベース上の操作は、PDO 拡張機能自体を使用して実行されるのではなく、さまざまなデータベース サーバーの特定の PDO ドライバーを使用してアクセスする必要があります。例: MYSQL (PDO_MYSQL)。 PDO パーツのリストは phpinfo() 関数で表示できます。2. PDO のインストール
1. Linux: PHP をインストールするときに、configure コマンドに次のフラグを追加します: –with-pdo- mysql=/usr/local/mysql ///usr/local/mysql は、mysql インストール ディレクトリです。2. Windows:C:windowsで php.ini ファイルを見つけます。
(1) 開く: extension=php_pdo.dll(2) 開く: extension=php_pdo_mysql.dll3. PDO プロセスを使用する
1. データベースに接続します 2. PDO オブジェクトを作成します: (1)$link = new PDO(DSN, ユーザー名, パスワード, ドライバー属性); 1) DSN: データ ソース名。使用する必要があるドライバーと使用するデータベースを定義するために使用されます。 mysql の DSN 形式: 'mysql:host=localhost;dbname=lamp30'2) DSN は、次のようなファイルに置くことができます: 'uri:file:///usr/local/dsn。 txt' 3) PDO インスタンスの宣言時にエラーが発生すると、例外が自動的にスローされるため、オブジェクトの作成時に try...catch ステートメントを使用します。例: コードは次のとおりですtry{ $link = new PDO(‘mysql:host=localhost;dbname=lamp30’,’root’,’111111’); }catch(PDOException $e){ echo $e->getMessage(); exit(‘连接数据库错误.’); }3. ドライブ属性(1) いくつかの必要なオプションを含む配列を形成できます (属性名は次のように使用されます)。要素キー、属性値が要素値として使用されます) がコンストラクターの 4 番目のパラメーターに渡されます。ドライバー属性がコンストラクターで定義されていない場合は、後で PDO クラスの setattribute() 関数を使用して各属性を定義できます。 (2) これらの属性については、本書の P501 ページに中国語で説明があります。 3. 文字セットの設定: $link->query('set names UTF8')
5. SQL ステートメントの送信
(1 )$link->exec(): 追加、削除、変更を実行し、影響を受ける行数を返します。実行が失敗した場合は、false または 0 を返します。 (2)$link->query(): クエリを実行し、PDOStatement 結果セット オブジェクトを返します。6. クエリ結果
1. 非クエリ:(1) $link->exec によって返された影響を受ける行を直接使用します。 () Number(2)$link->lastInsertId() は、最後の INSERT コマンド2 によって生成された AUTO_INCREMENT 数値を返します。「前処理」を参照してください。 7. 前処理
1. ステップ 2: SQL ステートメントの送信コードは次のとおりです$stmt = $link->prepare(‘select * from user where id=:id’); $stmt->bindparam(‘:id’, $id, PDO::PARAM_INT); $id = 2; $stmt->execute();bindParam() パラメータには次の 7 種類があります。
PDO::PARAM_INTPDO::PARAM_STRPDO::PARAM_BOOLPDO::PARAM_NULL
## と書く必要はありません#PDO::PARAM_LOB: ラージ オブジェクト データ型
PDO::PARAM_STMT: PDO ステートメント タイプ
PDO::PARAM_INPUT_OUTPUT: ストアド プロシージャで使用されるデータ型
2. ステップ3:
例:
コードは次のとおりです
$stmt = $link->query(‘select * from user’);
(1)fetch()メソッド
$pdoStat ->bindColumn(1, $id); //第一个参数可以是从1开始的索引值 $pdoStat ->bindColumn(‘name’, $name); //也可以是列名 $pdoStat ->bindColumn(‘pass’, $pass); while($row = $stmt ->fetch(PDO::FETCH_BOUND)){ echo $id.’ ’; echo $name.’ ’; echo $pass.’ ’; }
setFetchMode() メソッドを使用してデフォルト モードを設定できます。
(2)fetchall()メソッド
コードは次のとおりです
$result = $stmt ->fetchall(); foreach($result as $row){ echo $row[‘id’].’ ’; echo $row[‘name’].’ ’; echo $row[‘pass’].’ ’; }
Fetchall()のパラメータはfetch()と同じです。
8. トランザクション処理1. 自動送信をオフにする (ドライバーのプロパティで変更)
2. トランザクションを開く
3. トランザクション/ロールバックをコミットします
4. 自動送信をオンにします
例:
コードは次のとおりです
$link = new PDO(‘mysql:host=localhost;dbname=lamp30’); //1 $link->setattribute(PDO::ATTR_AUTOCOMMIT, false); //2 $link->begintransaction(); $result = $link->exec(‘insert into user(name,paa) values(‘wsy’,’111’)’); //3 if($result){ $link->commit(); }else{ $link->rollback(); } //4 $link->setattribute(PDO::ATTR_AUTOCOMMIT, true);9。 PDO オブジェクトのメンバー メソッド
1、$link->getattribute (属性名): ドライバー属性を取得します。
2. $link->setattribute (属性名、属性値): ドライバーの属性を設定します。
1) Oracle は空の文字列を NULL 値として返し、他のデータベースにはこの機能がないため、互換性を高めるために $link->setattribute(PDO::ATTR_ORACLE_NULLS,PDO::NULL_EMPTY_STRING, ) ;
2) エラーを表示するには、静的、警告メッセージ、例外
3、$link->errorcode(): エラー コードを取得する 3 つの方法があります。
1) setattribute 関数でエラー表示モードを static に設定すると、エラー発生時に何も表示されなくなり、エラー番号を表示するにはこの関数を呼び出す必要があります。
4. $link->errorinfo(): エラー情報(配列)を取得します。
1) setattribute 関数でエラー表示モードを static に設定すると、エラー発生時に何も表示されなくなります。エラー メッセージを表示するには、この関数を呼び出す必要があります。
5. $link->lastinsertid(): テーブルに最後に挿入されたデータの主キー値を取得します (複数のデータが同時に挿入された場合は、最初に挿入されたデータの ID を返します)行)。
6、$link->prepare():发送准备的SQL语句,返回PDOStatement对象。
7、$link->begintransaction():打开事务。
8、$link->commit():提交一个事务,执行一个SQL。
9、$link->rollback():回滚一个事务。
十、错误模式
1、静态模式:
代码如下
$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT)
(1) 默认模式,在错误发生时不进行任何操作,PDO将只设置错误代码。
(2) 查看错误可以调用errorCode()和errorInfo(),PDO和PDOStatement类都有这两个方法。
2、警告模式:
代码如下
$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING)
(1)此模式在设置错误代码以外,PDO还将发出一条PHP传统的E_WARNING消息。
(2)这是mysql和mysqli显示错的方式。
3、异常模式:
代码如下
$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)
(1) 此模式在设置错误代码以外,PDO还将抛出一个PDOException,并设置其属性,以反映错误代码和错误信息。
(2) 如果异常导致脚本终止,则事务将自动回滚。
(3) PDO推荐使用此模式。
十一、持久连接
代码如下
$link->setAttribute(PDO::ATTR_PERSISTENT, true);
持久连接即当脚本执行结束时不会自动断开连接,而且用$link->close()不能关闭连接。
以上がPDOをPHPで使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。