Задать вопрос
@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, нифига не работает... Чуть подробный код находится в комментариях под вопросом.
  • Вопрос задан
  • 240 просмотров
Подписаться 1 Оценить 7 комментариев
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@qxcoder
---
$frow !== "false"
Если вы используете строгое сравнение и $frow у вас инициализированно, как $frow = false, то это условие никогда не выполнится. Попробуйте убрать ковычки и написать так:
if ($frow !== false && $price == $stoimost) {
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽