Цикл запроса обновления в запросе на выборку.
Вы знаете, что у нас есть проблема, когда тип вопроса на Stack Overflow имеет 6000 просмотров и только 1 неверный ответ. Пример и другой и другой.
Я потратил много времени, пытаясь понять, может быть, просто может быть есть другой способ сделать это… от использования операторов инкремента до конструкций foreach, и я вам говорю, я потерпел неудачу.
Давайте поговорим о синтаксисе MySQL, который считается ущербным, особенно когда вам нужно создавать сложные CRUD-приложения, которые должны: сохранять в начало и середину, находить, где что-то есть что-то, но только там, где что-то есть что-то другое и замените только те из них, где другая вещь является четным числом, бла-бла-бла…
Мы все были там, и нам приходилось искать способы заставить запрос работать идеально. Я столкнулся с чем-то подобным на днях и нашел способ обойти это, и вот подробное инструкция.
Сценарий дела:
- У нас есть база данных с таблицей с именем Пользователи.
- У каждого пользователя есть значения:{name,age,dob}
- Поле дата рождения представляет собой «дату рождения», хранящуюся в формате Д М Г.
- Но мы хотим, чтобы он был переписан и обновлен до Г-М-Д.
- Мы хотим, чтобы это было сделано примерно для 70 пользователей с помощью простого сценария MySQL.
Теперь, конечно, если мы хотим сделать это для одного пользователя, все, что нам нужно, это:
SELECT FROM USER WHERE name = “something_given_manually” { GET THE USERS OLD D M Y UPDATE THE USERS dob = Y-M-D }
Постановка проблемы:
Проблема в том, что для нескольких пользователей мы не можем указать имя каждого пользователя, и оказывается, что мы не можем зациклить запрос UPDATE внутри запроса SELECT, потому что наш первоначальный выбор запрос завершается до запуска нашего запроса на обновление. Да!
Но у нас есть решение
Что я сделал, так это:
- Добавьте в таблицу новый столбец (поле) с именем dwp со значением по умолчанию blah.
- Выбрана и обновлена добавление одного пользователя с blah в его dwp.
- Затем очистил значение пользователей в столбце dwp.
- При следующем запуске кода будет выбран и обновлен следующий пользователь.
Расслабьтесь, это проще, чем кажется:
Теперь, конечно, когда это произойдет, это произойдет только один раз, поэтому нам нужно было запускать код, пока все пользователи не будут обновлены. Вот простой JS-код, который перезагружает страницу через 5 секунд, пока не будет выполнен запрос на выборку, благодаря нашему оператору while.
//reload page to run the script for the next update //I’m using 5 seconds here to compensate for server response time. echo "<script> setTimeout(function(){ location.reload(); }, 5000); </script> ";
Теперь возьмите свой яд и наслаждайтесь шоу.
Это может что-то исправить для вас? Я думаю, именно благодаря таким интересным приемам большинство разработчиков занялись написанием кода; из-за того, как сложно найти способ s делать удивительные вещи с несколько неограниченным, но ограниченным набором инструментов. Сегодня у нас есть много фреймворков, которые лишают вас большей части удовольствия, поэтому я надеюсь, что это вернуло немного того огня.
… и никогда не падайте духом, ребята.