SQL UPDATE не работает?

0

В моем приложении LAMP (с использованием CodeIgniter) у меня есть вызов $this- > db- > update..., который генерирует SQL следующим образом:

UPDATE `MyTable` SET `MyProcess` = 5 WHERE `Id` = 1

Проблема в том, что это, кажется, работает с перерывами - и я в настоящее время не знаю, что может быть неправильным. Есть ли что-нибудь о MySQL, о котором мне нужно знать при попытке обновления? Я добавляю и обновляю записи много (но, вероятно, не более одного запроса каждые 5 секунд). Когда я запускаю запрос в phpMyAdmin, он отлично работает.

  • 1
    Можете ли вы опубликовать свой фактический код, включая утверждение?
Теги:
codeigniter

2 ответа

3
Лучший ответ

Это дополнение к ответе Марка. mysql_affected_rows также возвращает 0, если вы пытаетесь обновить запись, но значения в этой записи не изменяются.

Например; текущие значения в MyTable:

+----+-----------+
| ID | MyProcess |
+----+-----------+
| 1  | 5         |
+----+-----------+

Затем, когда вы запустите свой запрос:

UPDATE `MyTable` SET `MyProcess` = 5 WHERE `Id` = 1

mysql_affected_rows вернет 0

Может ли это быть в вашем случае?

  • 0
    Ооо, хорошая мысль
  • 0
    Это было. Я увеличивал счетчик в поле БД. Мой подход был неверным. Благодарю.
1

Одна вещь, которая может поймать людей, состоит в том, что если ваш id по какой-либо причине не существует в таблице, вы не получите никакой ошибки из инструкции UPDATE - она ​​просто ничего не сделает ничего.

Вы можете использовать, например, mysql_affected_rows (или эквивалент для вашего API баз данных), чтобы увидеть, что строка была фактически обновлена, и если не отображать и не регистрировать сообщение об ошибке. Это должно помочь вам устранить вашу проблему.

  • 0
    В таблице есть 1 запись. У него id = 1. Причина, по которой я обнаружил эту ошибку, заключается в том, что сразу после обновления ставится утверждение. Я утверждал, что количество строк должно быть равно 1. Утверждение иногда не выполняется.
  • 0
    Когда утверждение не выполнено, затронутое количество строк равно нулю или больше одного?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню