Транзакция не вставляет данные в базу данных, продолжает откат, но я не вижу проблемы - PullRequest
0 голосов
/ 26 мая 2019

Команды sql работают в phpmyadmin, но не будут работать в коде. Я не получаю сообщений об ошибках, и это, кажется, успешно, но ничего не идет в базу данных. Я пробовал различные методы, но просто не могу найти проблему. Действительно в растерянности. Может быть, транзакция - не лучший способ вставить данные в несколько таблиц?

$db->beginTransaction(); // ***********************
$stmt = $db->prepare('INSERT INTO guests 
VALUES (null, :sFirstName, :sLastName, :sEmail, :sPhone, :sAddressLine1, :sCity, :sCountry);
SELECT * FROM guests
INNER JOIN countries ON guests.country_fk = countries.country_id;');

$stmt->bindValue(':sFirstName', $sFirstName);
$stmt->bindValue(':sLastName', $sLastName);
$stmt->bindValue(':sEmail', $sEmail);
$stmt->bindValue(':sPhone', $sPhone);
$stmt->bindValue(':sAddressLine1', $sAddressLine1);
$stmt->bindValue(':sCity', $sCity);
$stmt->bindValue(':sCountry', $sCountry);
if(  !$stmt->execute() ){ 
  echo 'Cannot update the user '.__LINE__;
  $db->rollBack();
  exit;
}

 $stmt = $db->prepare('INSERT INTO reservations VALUES(null, :sRoomId, :sCheckInDate, 
 :sCheckOutDate, :nightsRequested, :iNumberOfGuests);
 SELECT *
 FROM reservations
 INNER JOIN rooms ON reservations.room_fk = rooms.room_id;');
 $stmt->bindValue(':sRoomId', $sRoomId);
$stmt->bindValue(':sCheckInDate', $sCheckInDate);
$stmt->bindValue(':sCheckOutDate', $sCheckOutDate);
$stmt->bindValue(':nightsRequested', $nightsRequested);
$stmt->bindValue(':iNumberOfGuests', $sNumberOfGuests);
if(  !$stmt->execute() ){ 
  echo 'Cannot insert a user '.__LINE__;
  $db->rollBack();
  exit;
}

// SUCCESS
echo 'DONE';
$db->commit(); // ***********************

1 Ответ

0 голосов
/ 28 мая 2019

Одно утверждение за один раз. Ваши два утверждения могут быть INSERT и SELECT, но любая комбинация утверждений вызовет проблемы.

...