В моем приложении LAMP (с использованием CodeIgniter) у меня есть вызов $this- > db- > update..., который генерирует SQL следующим образом:
UPDATE `MyTable` SET `MyProcess` = 5 WHERE `Id` = 1
Проблема в том, что это, кажется, работает с перерывами - и я в настоящее время не знаю, что может быть неправильным. Есть ли что-нибудь о MySQL, о котором мне нужно знать при попытке обновления? Я добавляю и обновляю записи много (но, вероятно, не более одного запроса каждые 5 секунд). Когда я запускаю запрос в phpMyAdmin, он отлично работает.
Это дополнение к ответе Марка. mysql_affected_rows
также возвращает 0
, если вы пытаетесь обновить запись, но значения в этой записи не изменяются.
Например; текущие значения в MyTable
:
+----+-----------+
| ID | MyProcess |
+----+-----------+
| 1 | 5 |
+----+-----------+
Затем, когда вы запустите свой запрос:
UPDATE `MyTable` SET `MyProcess` = 5 WHERE `Id` = 1
mysql_affected_rows
вернет 0
Может ли это быть в вашем случае?
Одна вещь, которая может поймать людей, состоит в том, что если ваш id
по какой-либо причине не существует в таблице, вы не получите никакой ошибки из инструкции UPDATE
- она просто ничего не сделает ничего.
Вы можете использовать, например, mysql_affected_rows
(или эквивалент для вашего API баз данных), чтобы увидеть, что строка была фактически обновлена, и если не отображать и не регистрировать сообщение об ошибке. Это должно помочь вам устранить вашу проблему.