2

MySQL でトランザクションを使用したいのですが、クエリが正常に送信されたかどうかを確認するにはどうすればよいですか? 私のクエリは次のとおりです。

mysql_query("START TRANSACTION");
$query_1 = mysql_query("DELETE FROM BLAH WHERE BLAH");
$query_2 = mysql_query("DELETE FROM BLAH WHERE BLAH");
mysql_query("COMMIT");

私の知る限り、上記のコードはトランザクションを実行しますが、クエリが正常に送信されたかどうかを確認したいので、次のようにします。

    mysql_query("START TRANSACTION");
    $query_1 = mysql_query("DELETE FROM BLAH WHERE BLAH");
    $query_2 = mysql_query("DELETE FROM BLAH WHERE BLAH");
    if($query_1 && $query_2){
       mysql_query(COMMIT);
    }else{
       mysql_query(ROLLBACK);
    }

しかし、トランザクションでは、" " を呼び出したときにクエリが送信されることをどこかで読んだCOMMITため、上記のコードは機能しないはずです。$query_1 && $query_2COMMIT

前もって感謝します

PS: 私はすべてを正しく行っていますか? 他にも良い方法があれば教えてください...ありがとう

4

1 に答える 1

1

コマンドを実行している場合は、関数DELETEを呼び出して、影響を受けた行があったかどうかを確認できますmysql_affected_rows()

mysql_affected_rows — 以前の MySQL 操作で影響を受けた行の数を取得する

ドキュメントには、トランザクションと組み合わせて使用​​することについての言及さえあります -

注: トランザクション トランザクションを使用している場合、COMMIT の後ではなく、INSERT、UPDATE、または DELETE クエリの後に mysql_affected_rows() を呼び出す必要があります。


ここで、古いバージョンのデータベース接続を使用していることに注意してください。コマンドに関連する任意のページで php ドキュメントを参照すると、次のmysql_*メッセージが表示されます -

この拡張モジュールは PHP 5.5.0 で非推奨になり、将来的に削除される予定です。代わりに、MySQLiまたはPDO_MySQL拡張機能を使用する必要があります。

于 2012-12-22T11:27:02.897 に答える