Синтаксис в этом запросе MySQL может быть неправильным

0

Что-то не так с синтаксисом в этом запросе MySQL?

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

Джон

$ttquery = sprintf("Update login SET ".$row['ttemail']." = '1' WHERE username = ".$row['username'].""); 

РЕДАКТИРОВАТЬ: Хорошо, по запросу Pekka, я повторил фактическое значение запроса, и это дало мне несколько идей. Теперь я использую это:

$ttquery = "Update login SET ttemail = 1 WHERE username = ".$row['username']."";

и я получаю эту ошибку: Неизвестный столбец 'admin' в 'where clause'. "admin" - это первое имя пользователя, которое удовлетворяет условию, которым я хочу запустить этот запрос, для... это не имя поля. Любые идеи о том, почему я получаю сообщение об ошибке?

РЕДАКТИРОВАТЬ: Вот запрос эхо-запросов MySQL, если это помогает:

Update login SET ttemail = 1 WHERE username = admin
  • 1
    @ Джон без обид, но я уже четвертый раз пытаюсь сказать вам, пожалуйста, покажите окончательно сгенерированный запрос, а не исходный код PHP. Невозможно отладить запрос из источника PHP, потому что ошибка может быть в одной из переменных.
  • 0
    Может быть не так? Запустите его, и вы увидите, если это не так или нет. Мы не можем вам этого сказать, так как мы не знаем структуру вашей таблицы и что содержит $ row ...
Показать ещё 8 комментариев
Теги:

5 ответов

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

Вероятно, вам нужны одинарные кавычки вокруг имени пользователя

$ttquery = "Update login SET ".$row['ttemail']." = '1' WHERE username = '".$row['username']."'";

Если вы используете sprintf, у вас будет:

$ttquery = sprintf("Update login SET %1$s = '1' WHERE username = '%2$s'", $row['ttemail'],$row['username']);
  • 0
    +1 Проблема в отсутствии одинарных кавычек вокруг значения.
  • 0
    "% 1 $ s" -> ты уверен? Вы имели в виду "% 1 $ s" или "% 1 \ $ s", я думаю ..: P
1
Update login SET ttemail = 1 WHERE username = admin

В SQL строки окружены одинарными кавычками, а имена таблиц и столбцов - без кавычек. Вам нужно исправить свой PHP-код, чтобы вы его создали:

Update login SET ttemail = 1 WHERE username = 'admin'

Попытайтесь убедиться, что вы понимаете базовый SQL, прежде чем ударить головой против PHP; -)

0

человек, будьте осторожны с инъекциями sql. Кроме того, зачем звонить sprintf(), если вы действительно не используете его?

0

Это должно работать:

$ttquery = "Update login SET ".$row['ttemail']." = '1' WHERE username = '".$row['username']."'";

0

попробуйте это

$ttquery = sprintf("Update login SET ".$row['ttemail']." = '1' WHERE username = '" . $row['username'] ."'"

i.e., username = '[ваше значение]'

Ещё вопросы

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