UPDATE bookings b SET reservation_processed = 'archived' JOIN reservation_time_data r ON r.id = b.reservation_time WHERE premises_code = 'LJJIDHhRN2ho1e3h' AND reservation_date LIKE '%2020-09-10%' AND CURRENT_TIME > ADDTIME(r.end_time, '0:30:0.000000')
I first got the error in php, and I then tested it in phpmyadmin and I get an error. It doesn’t specify why there is an error it just saying an error with the syntax. I thought it maybe because there is multiple AND clauses but I put them in brackets to maybe simplify it but it didn’t help 🙁 Anyone any ideas?
Advertisement
Answer
The correct syntax is:
UPDATE bookings b JOIN reservation_time_data r ON r.id = b.reservation_time SET reservation_processed = 'archived' WHERE premises_code = 'LJJIDHhRN2ho1e3h' AND reservation_date LIKE '%2020-09-10%' AND CURRENT_TIME > ADDTIME(r.end_time, '0:30:0.000000')
That said, your query should qualify all column references. You can still get an invalid time. Also, using LIKE
on a date/column is wrong. So is storing a date as a string. If I assume that the value is really a date and speculate on where columns come from, then the query should look something like this:
UPDATE bookings b JOIN reservation_time_data r ON r.id = b.reservation_time SET b.reservation_processed = 'archived' WHERE b.premises_code = 'LJJIDHhRN2ho1e3h' AND r.reservation_date = '2020-09-10' AND CURRENT_TIME > ADDTIME(r.end_time, '0:30:0.000000')