sql >> Database teknologi >  >> RDS >> Mysql

Stop og vend tilbage, hvis en af ​​flere forberedte sætninger mislykkes

  1. sæt mysqli i undtagelsestilstand ved at tilføje denne linje før mysqli connect

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    
  2. Indslut dine forespørgsler i en transaktion
  3. Indslut din transaktion i en try..catch-erklæring, og tilføj et tilbagekald.

Så koden ville være noget lignende

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$db = new mysqli(...);
...
try {
    $db->autocommit(FALSE);

    $db->address_table_insert_statement($firstName, $lastName, $companyName, $streetAddress, $streetAddress2, $streetAddress3, $city, $state, $zip, $country, $phone, $fax, $email, $date, $date);
    $addressId = mysqli_insert_id($db->connection);
    $db->address_table_insert_statement($firstName, $lastName, $companyName, $billingStreetAddress, $billingStreetAddress2, $billingStreetAddress3, $billingCity, $billingState, $billingZipCode, $billingCountry, $billingPhone, $billingFax, $billingEmail, $date, $date);
    $billingAdressId = mysqli_insert_id($db->connection);
    $db->account_table_insert_statement($active, $addressId, $billingAddressId, $dateCreated, $dateModified);

    $db->commit();
} catch (\Exception $e) {
    $db->rollback();
    throw $e;
}



  1. Resten i PostgreSQL, MS SQL Server, MySQL og SQLite

  2. FEJL 1064 (42000):Du har en fejl i din SQL-syntaks; Ønsker at konfigurere en adgangskode som root som bruger

  3. PHP MySQL sæt Connection Timeout

  4. postgres omdøb databasen virker ikke