Давайте посмотрим на лес сначала, прежде чем смотреть на деревья.
Здесь есть много информативных ответов с большими подробностями, я не буду повторять ни одного из них. Ключ к программированию в JavaScript имеет сначала правильную ментальную модель общего исполнения.
Хорошие новости заключается в том, что, если вы хорошо понимаете этот момент, вам никогда не придется беспокоиться о гоночных условиях. Прежде всего вы должны понимать, как вы хотите упорядочить свой код как по существу ответ на разные дискретные события, и как вы хотите объединить их в логическую последовательность. Вы можете использовать обещания или новые асинхронные / ожидающие более высокие уровни в качестве инструментов для этой цели, или вы можете откатывать свои собственные.
Но вы не должны использовать какие-либо тактические инструменты для решения проблемы, пока вам не понравится актуальная проблемная область. Нарисуйте карту этих зависимостей, чтобы знать, что нужно запускать, когда. Попытка ad-hoc подхода ко всем этим обратным вызовам просто не поможет вам.
После execute()
вы должны использовать fetch()
, потому что execute()
просто возвращает TRUE
при успешном выполнении или FALSE
при сбое:
$orders->execute(...
$result = $orders->fetch(PDO::FETCH_ASSOC);
print_r($result);
Когда execute
завершается успешно, он возвращает TRUE
. В вашем случае запрос завершается успешно, он просто возвращает 0 строк, что является вполне допустимым результатом. Если вы хотите проверить, возвратил ли запрос какие-либо строки, вы можете попробовать fetch
из результата:
$orders->execute(array($message,$this->model->checkapi($data,$message)));
$check = $orders->fetch();
if ($check) {
Сказав это, весь этот подход меня поразил неправильное - удаление одной строки не является значительно более тяжелой операцией, чем запрос этой строки, если это вообще возможно. И в худшем случае, где он существует, вы выполняете два утверждения вместо одного. Я бы просто пошел и отправлю инструкцию delete, и если это не повлияет на какие-либо строки (потому что они не существуют), пусть будет так.