2016-04-24 8 views
0

私は現在ウェブサイトプロジェクトを行っています。そして今は私のsign.phpファイルで、少なくとも5つのSQL文を実行する必要があります。通常は私はmysqli_query関数を使用し、falseを返さない場合は次の関数を渡します。しかし、もし彼らのうちの1人が偽を返すならば?以前のステートメントはokeyですが、残りのステートメントは失敗します。したがって、ユーザーはシステムに完全に署名することはできません。データベースの半分だけが更新されます。PHPで複数のMySQL操作を処理する方法が失敗した場合

if(mysqli_query($con, $sql)) 
{ 
    //do the next one 
} 
else 
{ 
    //everything messed up 
} 

この方法ではわかりません。アルゴリズムの品質は悪いです。私はこの問題をどう扱うべきか分かりません。これらの操作を実装するために私が従うべき最善の道は何ですか?

注:すべての操作が異なります。 SELECT、INSERT、CREATE、UPDATEを使用する必要があります。 注2:何かが欠けている場合は、質問を編集できます。

答えて

2

SQL transactionsを使用すると、以前のクエリによって作成されたデータベースへの変更がロールバックされないようにすることができます。

+0

これはクールな音ですので、ネストされた5の方が良いでしょうか? – kimdirbilmem

+0

通常は、入れ子にする必要はありません。最良の選択肢は、mysqliに[例外をスローする](http://stackoverflow.com/questions/14578243/turning-query-errors-to-exceptions-in-mysqli)を伝えてから、単一の 'catch'ブロックを処理してすべての予期せぬ失敗。 – Chris

+0

なぜ私はそれを考えなかったのですか?どちらも私が探しているものです。私はあなたに感謝します... – kimdirbilmem

関連する問題