Как обновить строку в базе данных?

Пытаюсь обновить строку в кастомной таблице, но ничего не обновляется, ошибок не выдает. Видимо я что т оне так делаю?
$wpdb->update(TBL_PERSON, $personPostOldData, $personPostData);

Пробовал писать sql запрос в phpMyAdmin, отвечает, что 0 строк задействовано, или что то такое.
UPDATE `wp_person_post_data` SET `autor_id` = '1', `post_id` = 153, `teach_start` = '', `address` = '', `email` = '', `phone` = '', `url` = '', `fb` = '', `vk` = '', `yutu` = '' WHERE `autor_id` = '1' AND `teach_start` = '' AND `address` = 'тест' AND `email` = '' AND `phone` = '' AND `url` = '' AND `fb` = '' AND `vk` = '' AND `yutu` = '' AND `post_id` = 153

Пока решил вопрос удалением старой строки и вставкой новой, но это явный костыль и лишнее обращение к базе. Хотелось бы обойтись меньшими потерями производительности.
  • Вопрос задан
  • 491 просмотр
Решения вопроса 1
@MadridianFox
Web-программист, многостаночник
Когда вы делаете update запрос вам не надо указывать данные, которые не изменяются
и не надо указывать в where больше условий чем необходимо для идентификации изменяемой строки. Если в строке есть primary key, то достаточно указать только его.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@pool
упростите до следующего:
UPDATE `wp_person_post_data` 
SET `autor_id` = '1', `teach_start` = '', `address` = '', `email` = '', `phone` = '', `url` = '', `fb` = '', `vk` = '', `yutu` = '' 
WHERE `post_id` = 153
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А вы уверены, что у вас есть строка, в которой одновременно выполняются все условия из WHERE?
Ответ написан
Ваш ответ на вопрос

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

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