2010-04-27 3 views
-1

Я пытаюсь использовать запрос обновления для изменения значений, хранящихся в базе данных, новые значения, которые я пытаюсь сохранить, хранятся в переменных php. Я не уверен, что я делаю неправильно.Запрос на обновление MYSQL php

mysql_query ("пользователь UPDATE SET статус = 'полный' WHERE user_id = '$ user_id'") или умереть (mysql_error());

здесь является сообщением об ошибке

Дублировать запись '91317691' для ключа 1

спасибо заранее

+1

Что происходит или не происходит? Вы на 100% уверены, что существует запись пользователя с этим идентификатором? Что содержит '$ user_id'? –

+1

Вы должны быть более конкретными в отношении типа ошибки, которая происходит. Возможно, опубликуйте текст mysql_error(). – Chaim

+0

Также добавьте вывод 'SHOW CREATE TABLE user'. Вы абсолютно уверены, что запрос, который вы опубликовали, вызывает ошибку «Duplicate entry»? – VolkerK

ответ

-1

Я думаю, что вам нужно изменить

.. . '"+ $ user_id +"' "...

положить закрытие двойной цитаты "после вашего сингла, затем добавить свой $ user_id, а затем добавить окончательное закрытие" '"(двойная кавычка, одинарная кавычка, двойная кавычка)

Кроме того, если у вас нет контроля над $ user_id, вы можете быть открыты для SQL-инъекционных атак

0

Похоже, что ваше поле user_id является целым числом. Ввод «» вокруг него будет ломать вещи

попробовать его без кавычек

mysql_query("UPDATE user SET status='full' WHERE user_id = $user_id")or die(mysql_error()); 
+1

MySQL автоматически приносит что-то вроде '' 12'' в целое число, если это необходимо. – VolkerK

+0

его никогда не делал, что для меня, всегда испортил мой запрос – Galen

+0

см. Http://dev.mysql.com/doc/refman/5.0/en/type-conversion.html – VolkerK

1

Это означает, что существует дублирование в уникальном ключе. Предположим, что вы используете уникальные на (user_id, status), а status имеет тип enum, если в этом случае у вас может быть запись, соответствующая той, которую вы пытаетесь обновить.

| user_id | status | 
| 1234 | full | 
| 1234 | none | 

Если это не тот случай, размещение схемы было бы полезно.

0

извинения, я понял, что проблема была вызвана в другом месте моего php-скрипта, но я решил это.

Смежные вопросы