ホームページ  >  記事  >  バックエンド開発  >  PHP による MySQL トランザクション インスタンスの操作、mysql トランザクション インスタンス_PHP チュートリアル

PHP による MySQL トランザクション インスタンスの操作、mysql トランザクション インスタンス_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:15:10951ブラウズ

PHPはMySQLトランザクションインスタンス、mysqlトランザクションインスタンスを操作します

この記事の例は、PHP が MySQL トランザクションを操作する方法を説明しており、参考のために共有されています。具体的な方法は以下の通りです

一般的に言えば、トランザクションには ACID 特性が必要です。いわゆるACIDとは、Atomic(原子性)、Consistent(一貫性)、Isolated(分離)、Durable(永続性)の4つの単語の頭文字をとって書かれており、その意味を「銀行振込」を例に説明していきます。 :

① アトミック性: トランザクションを構成するステートメントは論理的な単位を形成し、その一部のみを実行することはできません。つまり、トランザクションは分割できない最小単位です。例: 銀行振込処理中に、ある口座から振込金額を差し引いて、同時に別の口座に追加する必要があります。1 つの口座だけを変更するのは不合理です。
② 整合性:トランザクション処理実行前後でデータベースの整合性が保たれています。つまり、トランザクションはシステム状態を正しく変換する必要があります。例: 銀行振込プロセス中に、振込金額が 1 つの口座から別の口座に送金されるか、両方の口座が変更されず、それ以外の状況は発生しません。
③ 分離: あるトランザクションは別のトランザクションに影響を与えません。つまり、どのトランザクションでもトランザクションが不完全な状態にあることを確認することは不可能です。たとえば、銀行送金中、送金トランザクションが送信されるまでは、別の送金トランザクションは待機状態になることしかできません。
④継続性:トランザクション処理の効果を永続的に保存することができます。一方、トランザクションは、サーバー、プロセス、通信、メディアの障害など、あらゆる障害に耐えられる必要があります。例: 銀行振込処理中に、振込後の口座ステータスを保存する必要があります。

PHP では、mysqli は mysql トランザクションの関連操作を適切にカプセル化しています。以下の例:

コードをコピーします コードは次のとおりです:
$sql1 = "update User set ScoreCount = ScoreCount +10 where ID= '123456'";
$sql2 = "ScoreDetail を更新 set FScore = 300、ID= '123456'";
$sql3 = "ScoreDetail ID,Score) 値 ('123456',60) に挿入";
$mysqli = new mysqli('localhost','root','','DB_Lib2Test');
$mysqli->autocommit(false);//物事を始める
$mysqli->クエリ($sql1);
$mysqli->クエリ($sql2);
if(!$mysqli->errno){
$mysqli->commit();
「ok」をエコーし​​ます;
}その他{
エコー「エラー」;
$mysqli->rollback();
}

ここでは、php mysql 一連の関数を使用してトランザクションを実行します。
コードをコピーします コードは次のとおりです:
$sql1 = "update User set ScoreCount = ScoreCount +10 where ID= '123456'";
$sql2 = "ScoreDetail を更新 set FScore = 300、ID= '123456'";
$sql3 = "ScoreDetail ID,Score) 値 ('123456',60) に挿入";
$conn = mysql_connect('localhost','root','');
mysql_select_db('DB_Lib2Test');
mysql_query('トランザクション開始');
//mysql_query('SET autocommit=0');
mysql_query($sql1);
mysql_query($sql2);
if(mysql_errno ()){
Mysql_query('ロールバック');
エコー「エラー」;
}その他{
Mysql_query('コミット');
「ok」をエコーし​​ます;
}
// mysql_query('SET autocommit=1');
// mysql_query($sql3);

ここに注意してください:

MyISAM: トランザクションをサポートせず、パフォーマンスを向上させるために読み取り専用プログラムに使用されます
InnoDB: ACID トランザクション、行レベルのロック、同時実行性をサポートします
Berkeley DB: トランザクションをサポートします

この記事が皆様の PHP+MySQL データベース プログラミングのお役に立てれば幸いです。

MySQL クラスを操作するための PHP と詳細な手順や例を提供できる人

以下は、学習に適した php5 の単純なデータベース カプセル化クラスです。削除や更新などの他の操作については、自分で追加できます:
class Mysql{ //最初にクラスを定義し、最初に Capital を記述します。文字
public $host;//サーバー名、アクセス修飾子 PUBLIC は、$host がパブリック属性であり、クラス内外の両方でアクセス可能であり、継承可能であることを証明します
public $user;//ユーザー名は public 属性です
private $pass;//パスワードは、$pass がプライベートであることを証明するために private 修飾子を要求します。
public $dbname;// データベース名も public 属性です。
/ /__construct は、これがいくつかの初期情報を定義するコンストラクターであることを宣言します。これには 3 つのパラメーターがあります
public function __construct($host,$user,$pass,$dbname){
$this->host = $host;
$this ->user = $user;
$this->pass = $pass;
$this->dbname = $dbname;
$link = @mysql_connect($this->host,$this->user ,$this->pass)
or die("error");
@mysql_select_db($this->dbname,$link)
or die("error2");
}
//次の検索合計を定義しますデータベース表示関数
function myQuery($sql){
$result = mysql_query($sql);
if(!$result){
echo "error3";
exit;
}
$num = mysql_num_rows($result) ;
if($num){
echo "NO".$num;
}
while($row = mysql_fetch_assoc($result)){
echo '

'.htmlspecialchars(stripslashes($row['body']))."
";
}
}
}
$rutt = new Mysql( 'localhost ','root','ssss','calvin');//クラスをインスタンス化します...ここでのパラメーターはコンストラクターのパラメーターと同じであることに注意してください...
$rutt->myQuery( .. ....本文の続き>>

ウェブサイト、PHP プログラミング コードを作成したいのですが、PHP の MYSQL キャッシュを実装するにはどうすればよいですか? 例を挙げるのが一番です

//以下はキャッシュ クラスです:
class cache {
//キャッシュ ディレクトリ
var $cacheRoot = "./cache/";
//キャッシュ更新時間 (秒)、0 はキャッシュなしを意味します
var $cacheLimitTime = 0;
//キャッシュファイル名
var $cacheFileName = "";
//キャッシュ拡張子
var $cacheFileExt = "html";

/*
* Constructor
* int $cacheLimitTime キャッシュ更新時間
* /
関数cache( $cacheLimitTime ) {
if( intval( $cacheLimitTime ) )
$this->cacheLimitTime = $cacheLimitTime;
$this->cacheFileName = $this->getCacheFileName();
//echo $this->cacheFileName;
ob_start();
}

/*
* キャッシュファイルが設定された更新時間内かどうかを確認します
* Return: 更新時間内であればファイルの内容を返し、それ以外の場合はファイルの内容を返します。失敗を返します
*/
関数cacheCheck(){
if( file_exists( $this->cacheFileName ) ) {
$cTime = $this->getFileCreateTime( $this->cacheFileName );
if( $cTime + $this- >cacheLimitTime > time() ) {
echo file_get_contents( $this->cacheFileName );
ob_end_flush();
exit;
}
}
return false;
}

/*
*キャッシュファイルまたは出力 Static
* string $staticFileName 静的ファイル名 (相対パスを含む)
*/
function caching( $staticFileName = "" ){
if( $this->cacheFileName ) {
$cacheContent = ob_get_contents() ;
// echo $cacheContent;
ob_end_flush();

if( $staticFileName ) {
$this->saveFile( $staticFileName, $cacheContent );
}

if( $this->cacheLimitTime )
$this-> ;saveFile( $this->cacheFileName, $cacheContent );
}
}

/*
...残りの全文>>

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/906673.html技術記事 PHP による MySQL トランザクションの操作例、mysql トランザクションの例 この記事では、PHP による MySQL トランザクションの操作方法を説明し、参考として共有します。具体的な方法は次のとおりです。 一般的に、トランザクションは...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。