Когда вы запускаете обновление, оно делает недействительным скрытый оператор в вашем db
и связанные с ним результаты.
db->query("SELECT …") -- creates the handler
-- 1st iteration
db->fetchassoc() -- fetches the first row
db->query("UPDATE …") -- creates another handler and destroys the old one
-- 2nd iteration
db->fetchassoc() -- no rows returned by `UPDATE`, nothing to fetch
То, что вы пытаетесь сделать, можно сделать проще, используя одно утверждение:
UPDATE accounts
SET installed = DATE_FORMAT(STR_TO_DATE(installed, @current_format_string), '%Y-%d-%m')
, где @current_format_string
- это то, как ваши даты форматируются сейчас.
Обновление:
Попробуйте выполнить этот запрос:
UPDATE accounts
SET installdate = DATE_FORMAT(STR_TO_DATE(installdate , '%m/%d/%Y'), '%Y-%d-%m')
Перед запуском UPDATE
запроса вы можете проверить результаты с помощью SELECT
:
SELECT DATE_FORMAT(STR_TO_DATE(installdate, '%m/%d/%Y'), '%Y-%d-%m')
FROM accounts