0

正常に実行する必要がある約 6 つのクエリがあります。現在、mysqli_query関数を使用してすべてのクエリを実行しています。すべてのクエリが正常に実行されたことを確認するにはどうすればよいですか? try catch メソッドを試しましたが、うまくいきません。

mysqli_query($connection,start)

    try{
          mysqli_query($connction,query1)
          mysqli_query($connction,query2)
          mysqli_query($connction,query3)
          mysqli_query($connction,query4)
          mysqli_query($connection,commit)

    }catch($e){

          mysqli_query($connection,ROLLBACK)

    }

このクエリの何が問題になっていますか? これにはより良い方法がありますか?

4

4 に答える 4

1

最初に例外をスローするように mysqli を設定するだけです。どうぞ:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
于 2013-09-03T05:02:10.563 に答える
0

デフォルトでは、クエリが失敗したときに例外をmysqli_query返しますがスローしません。false

例外モードを使用しない場合は、戻り値を確認する必要があります。

例えば:

$querys = array($sql1, $sql2, ..., $sql6);

$mysqli->autocommit(false);

foreach($querys as $sql) {
    $ret = $mysqli->query($sql);
    if (!$ret) {
       break;
    }
}

if ($ret) {
    $mysqli->commit();
} else {
    $mysqli->rollback();
}
于 2013-09-03T05:04:02.163 に答える
0

mysqli php 関数を使用している場合は、MySQL のように set auto commit 、 commit 、および roll back を使用するオプションがあります。

例として

/* disable autocommit */
$mysqli->autocommit(FALSE);

//execute your code 
/* commit insert */

$mysqli->commit();

ロールバックしたい場合は

/* Rollback */
$mysqli->rollback();
于 2013-09-03T05:08:02.900 に答える