@del993788

Почему php не дожидается выполнения sql запроса?

Здравствуйте. Ситуация такая: В первой половине скрипта выполняется подготовка данных к записи в mysql. Во второй части идёт небольшая проверка и добавление данных в бд. Если данные не прошли проверку, то они видоизменяются, если и это не помогло, то выводится сообщение об ошибке.
Вот такой код:
// подготовка данных
// ....
// проверка данных
if ($frow !== "false" && $price == $stoimost) {
// добавление данных в бд
echo "Успех";
} else {
require_once ("defrag.php"); // дефрагментация данных
// проверка данных
if ($frow !== "false" && $price == $stoimost) {
// добавление данных в бд
echo "Успех";
} else {
echo "Ошибка";
}
}

Вот эта "дефрагментация данных" - здоровый sql запрос в бд, на который уходит некоторое время.
Если в начале данные проверку не прошли, то после "дефрагментации" всё должно быть нормальным. Но проблема в том, что при первом нажатии на кнопку (при первом выполнение php) в консоли я получаю ответ "Ошибка", при втором нажатии получаю ответ "Успех". То есть данные еще не отдефрагментировались, а уже пошли на проверку.
Я, конечно, могу сделать еще один if, который примет значение переменной от defrag.php после выполнения sql запроса, но, мне кажется, что это гонево.
Вместо того, чтобы заделать трещину, я закрываю её картиной...

UPD: то, что я писал про переменную и defrag.php, нифига не работает... Чуть подробный код находится в комментариях под вопросом.
  • Вопрос задан
  • 233 просмотра
Пригласить эксперта
Ответы на вопрос 1
@qxcoder
---
$frow !== "false"
Если вы используете строгое сравнение и $frow у вас инициализированно, как $frow = false, то это условие никогда не выполнится. Попробуйте убрать ковычки и написать так:
if ($frow !== false && $price == $stoimost) {
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы