Reputation: 73
I am trying to insert data from a form in 2 separate tables which are linked by clientID, however I am getting an error:
INSERT INTO client_details (clientID, name, email, address, mobile) VALUES ('', 'a a', 'a', 'a', 'a');INSERT INTO bookings (bookingID, apartmentID, clientID, date_from, date_to, nights, pax, remarks) VALUES ('', '1', LAST_INSERT_ID(), '2015-08-28', '2015-08-31', '3', '4', 'Extra Remarks'); You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO bookings (bookingID, apartmentID, clientID, date_from, date_to, nights' at line 1
<?php
include 'connect.php';
$apartment = (isset($_POST['apartment']) ? $_POST['apartment'] : null);
$name = (isset($_POST['name']) ? $_POST['name'] : null);
$surname = (isset($_POST['surname']) ? $_POST['surname'] : null);
$email = (isset($_POST['email']) ? $_POST['email'] : null);
$address = (isset($_POST['address']) ? $_POST['address'] : null);
$mobile = (isset($_POST['mobile']) ? $_POST['mobile'] : null);
$pax = (isset($_POST['pax']) ? $_POST['pax'] : null);
$address = (isset($_POST['address']) ? $_POST['address'] : null);
$remarks = (isset($_POST['remarks']) ? $_POST['remarks'] : null);
$day_from = (isset($_POST['day_from']) ? $_POST['day_from'] : null);
$month_from = (isset($_POST['month_from']) ? $_POST['month_from'] : null);
$year_from = (isset($_POST['year_from']) ? $_POST['year_from'] : null);
$booking_from = $year_from."-".$month_from."-".$day_from;
$day_to = (isset($_POST['day_to']) ? $_POST['day_to'] : null);
$month_to = (isset($_POST['month_to']) ? $_POST['month_to'] : null);
$year_to = (isset($_POST['year_to']) ? $_POST['year_to'] : null);
$booking_to = $year_to."-".$month_to."-".$day_to;
$no_of_nights = abs(strtotime($booking_to) - strtotime($booking_from));
$days = floor($no_of_nights / (60*60*24));
$sql = "INSERT INTO client_details (clientID, name, email, address, mobile) VALUES ('', '$name $surname', '$email', '$address', '$mobile');";
$sql.= "INSERT INTO bookings (bookingID, apartmentID, clientID, date_from, date_to, nights, pax, remarks) VALUES ('', '$apartment', LAST_INSERT_ID(), '$booking_from', '$booking_to', '$days', '$pax', '$remarks');";
if (mysqli_query($conn, $sql)) {
echo "";
} else {
echo "" . $sql . "<br>" .mysqli_error($conn);
}
?>
GOAL SQL:
BEGIN; INSERT INTO client_detalis (clientID, name, email, address, mobile) VALUES('', '$name $surname', '$email', '$address', '$mobile'); INSERT INTO bookings (bookingID, apartmentID, clientID, date_from, date_to, nights, remarks, pax)) VALUES('', $apartment, LAST_INSERT_ID(),'$booking_from', '$booking_to', '$nights', '$pax', '$remarks'); COMMIT;
Upvotes: 0
Views: 963
Reputation: 73
My answer:
<?php
$apartment = (isset($_POST['apartment']) ? $_POST['apartment'] : null);
$name = (isset($_POST['name']) ? $_POST['name'] : null);
$surname = (isset($_POST['surname']) ? $_POST['surname'] : null);
$email = (isset($_POST['email']) ? $_POST['email'] : null);
$address = (isset($_POST['address']) ? $_POST['address'] : null);
$mobile = (isset($_POST['mobile']) ? $_POST['mobile'] : null);
$pax = (isset($_POST['pax']) ? $_POST['pax'] : null);
$address = (isset($_POST['address']) ? $_POST['address'] : null);
$remarks = (isset($_POST['remarks']) ? $_POST['remarks'] : null);
$day_from = (isset($_POST['day_from']) ? $_POST['day_from'] : null);
$month_from = (isset($_POST['month_from']) ? $_POST['month_from'] : null);
$year_from = (isset($_POST['year_from']) ? $_POST['year_from'] : null);
$booking_from = $year_from."-".$month_from."-".$day_from;
$day_to = (isset($_POST['day_to']) ? $_POST['day_to'] : null);
$month_to = (isset($_POST['month_to']) ? $_POST['month_to'] : null);
$year_to = (isset($_POST['year_to']) ? $_POST['year_to'] : null);
$booking_to = $year_to."-".$month_to."-".$day_to;
$no_of_nights = abs(strtotime($booking_to) - strtotime($booking_from));
$days = floor($no_of_nights / (60*60*24));
include 'connect.php';
if (!$conn->autocommit(FALSE)) {
printf("Errormessage: %s\n", $conn->error);
}
if (!$conn->query("INSERT INTO client_details (clientID, name, email, address, mobile) VALUES ('', '$name $surname', '$email', '$address', '$mobile')")) {
printf("Errormessage: %s\n", $conn->error);
}
if (!$conn->query("INSERT INTO bookings (bookingID, apartmentID, clientID, date_from, date_to, nights, pax, remarks) VALUES ('', '$apartment', LAST_INSERT_ID(), '$booking_from', '$booking_to', '$days', '$pax', '$remarks')")) {
printf("Errormessage: %s\n", $conn->error);
}
// important to insert as code will not work without commit
if (!$conn->commit()) {
printf("Errormessage: %s\n", $conn->error);
}
$conn->close();
?>
Upvotes: 1
Reputation: 702
You have to use mysqli transaction methods, like described in this answer: how-to-start-and-end-transaction-in-mysqli
Upvotes: 0