ホームページ  >  記事  >  バックエンド開発  >  PHPでのPDOトランザクション処理動作例

PHPでのPDOトランザクション処理動作例

不言
不言オリジナル
2018-05-02 16:40:122387ブラウズ

この記事では、主に PHP での PDO トランザクション処理操作を紹介し、PDO を使用した MySQL トランザクション処理操作手順、実装テクニック、および関連する注意事項をサンプルの形式で分析します。この記事では、PHP PDO トランザクション処理操作について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

概要: 複数の SQL 操作 (追加、削除、変更) を 1 つの操作単位として扱い、すべて成功するかすべて失敗します。

単一のデータにはトランザクション処理は必要ありません

操作されるテーブルは innoDB タイプのテーブル (トランザクションをサポート) である必要があります

MySQL でよく使用されるテーブル タイプ: MyISAM (非トランザクション) は追加、削除、変更が高速です, InnodB (トランザクション) はセキュリティが高いです

テーブルの型を innoDB 型に変更します

mysql> alter table stu engine=innodb;

使用: PDO 前処理に基づいて次の形式で追加します:

try{
$m->beginTransaction();//开启事务处理
//PDO预处理以及执行语句...
$m->commit();//提交事务
}catch(PDOException $e){
$m->rollBack();//事务回滚
//相关错误处理
}

例:

$m = new PDO($dsn,$user,$pwd);
$m->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
try{
$m->beginTransaction();//开启事务处理
$stmt=$m->prepare("insert into stu(name,sex,age,classid)values(?,?,?,?)");
$data=array(
array("user1",1,22,"lamp76"),
array("user2",1,20,"lamp76"),
array("user3",0,22,"lamp76")
);
foreach($data as $v){
$stmt->execute($v);
echo $m->lastInsertId();
}
$m->commit();
echo "提交成功!";
}catch(PDOException $e){
$m->rollBack();//回滚
die("提交失败!");
}

補足: PDOを使用したmysqlトランザクション処理とロールバック操作の別のphpサンプル分析

概要:

トランザクションは、一連のクエリおよび/または更新ステートメントで構成されます。 トランザクションを開始するには begin、starttransaction

を使用し、トランザクションをロールバックするには rollback を、トランザクションをコミットするには commit を使用します。 トランザクションの開始後、複数の SQL クエリまたは更新ステートメントが存在する可能性があります。各 SQL が実行のために送信された後、すべてが正しく実行された場合に、次のステップでロールバックするかどうかを決定するステートメントも必要です。正しく実行されれば、最終的に提出されます。

トランザクションがロールバックされると、データベースはトランザクションが開始される前の状態のままになります。編集したファイルを保存せずに終了した場合と同様に、ファイルの元の外観は自然に保持されます。
したがって、トランザクションはアトミックな操作とみなすことができ、トランザクション内の SQL は完全に実行されるか、まったく実行されないかのどちらかになります。 PHP での PDO の


MYSQL トランザクション処理手順:

①。自動送信をオフにします

③。例外が発生した場合は、自動的に例外プロンプトをスローし、ロールバックします

④。自動送信をオンにします

注:

mysql この InnoDB ドライバーのみがトランザクション処理をサポートしており、デフォルトの MyIsAM ドライバーはサポートしていません

関連する推奨事項:

by protected in php

PHP PDO が 1 つのデータを挿入し、2 つのデータが繰り返し表示される状況の解決策

以上がPHPでのPDOトランザクション処理動作例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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