#php #mysql #sql
#php #mysql #sql
Вопрос:
У меня есть следующий код:
$updateCode = mysql_query("UPDATE pages SET pageCode='$code' WHERE id='$userID' AND pageOrder='1'");
$updateProgress = mysql_query("UPDATE progress SET 1='yes' WHERE id='$userID'");
$updateRewards = mysql_query("UPDATE earnedRewards SET 1='yes' WHERE id='$userID'");
Первое ОБНОВЛЕНИЕ работает просто отлично, и pages
таблица обновляется. Однако вторые два ОБНОВЛЕНИЯ не работают, и столбец 1 в progress
и earnedRewards
не обновляется до ‘yes’.
Есть мысли о том, почему не работают вторые два ОБНОВЛЕНИЯ?
Комментарии:
1. добавьте «или die(mysql_error ())» после ваших запросов — это покажет вам, есть ли у вас какие-либо ошибки в вашем запросе
2. Ваш столбец называется «1»? Меня удивляет, что это разрешено.
3. Действительно ли у вас имя столбца 1? Вам следует подумать о том, чтобы изменить его на что-то другое, более подробное объяснение. И вы уверены, что ваш $userId правильный? Что происходит при выполнении этого запроса в phpMyAdmin (или аналогичном)?
4. @MarkRummel Пожалуйста, имейте в виду, что этот код уязвим (или может быть) для SQL-инъекций. Вам нужно убедиться, что
$userID
это очищено (например, приведено к int или экранировано).5. Даже если столбец с именем «1», вы
UPDATE
не пытаетесь получить к нему доступ, а скорее пытаетесь переназначить целое число1
.
Ответ №1:
Имя столбца равно 1??? Вы должны изменить имя столбца
Комментарии:
1. Я изменил название столбца, чтобы оно начиналось с буквы, и все работало просто отлично. Спасибо!
Ответ №2:
Если 1 действительно является именем вашего столбца, вам нужно будет экранировать его с помощью обратных меток.
UPDATE progress SET `1`='yes' WHERE id='$userID'
Если вы пытаетесь ссылаться на столбец позиционно (т. Е. На Первый столбец таблицы), не делайте этого. Используйте имя столбца.
Комментарии:
1. Возможно ли вообще иметь столбец с именем
1
? Если да: о чем, черт возьми, вы думали, MySQL-разработчики !?2. @middus: Это возможно. Цитирую документацию : «Идентификаторы могут начинаться с цифры, но, если они не указаны, могут состоять не только из цифр».
3. Серьезно, зачем кому-то разрешать это? Это просто крушение поезда, которое вот-вот произойдет.
4. @middus: Я согласен, что это ужасное название колонки. Но если что-то можно сделать, я гарантирую вам, что кто-то это сделает.
5. @JoeStefanelli Спасибо! Я изменил имя столбца, чтобы оно начиналось с буквы, и теперь все работает.