query('select *from user');" を通じてクエリを実行し、結果セット オブジェクトを返します。"/> query('select *from user');" を通じてクエリを実行し、結果セット オブジェクトを返します。">

ホームページ  >  記事  >  バックエンド開発  >  PDOをPHPで使用する方法

PDOをPHPで使用する方法

小老鼠
小老鼠オリジナル
2023-04-21 14:24:522126ブラウズ

pdo in php は、php 用の軽量で一貫性のあるインターフェイスを定義できる拡張クラス ライブラリです。その使用法は次のとおりです: 1. php サンプル ファイルを作成します。2. 「try{$link = new PDO」を通じて(.);}catch(PDOException $e){...}" で pdo オブジェクトを作成します。 3. "$link->query('select *from user');" を通じてクエリを実行し、結果を返します。オブジェクトを設定するだけです。

PDOをPHPで使用する方法

#このオペレーティング システム環境: Linux5.18.14 システム、Dell G3 コンピューター。

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.dll

3. 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_INT

PDO::PARAM_STR

PDO::PARAM_BOOL

PDO::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.’
’;
}

パラメータは6つありますfetch() についてはマニュアルを参照してください。

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。