Что-то не так с синтаксисом в этом запросе 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
Вероятно, вам нужны одинарные кавычки вокруг имени пользователя
$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']);
Update login SET ttemail = 1 WHERE username = admin
В SQL строки окружены одинарными кавычками, а имена таблиц и столбцов - без кавычек. Вам нужно исправить свой PHP-код, чтобы вы его создали:
Update login SET ttemail = 1 WHERE username = 'admin'
Попытайтесь убедиться, что вы понимаете базовый SQL, прежде чем ударить головой против PHP; -)
человек, будьте осторожны с инъекциями sql.
Кроме того, зачем звонить sprintf()
, если вы действительно не используете его?
Это должно работать:
$ttquery = "Update login SET ".$row['ttemail']." = '1' WHERE username = '".$row['username']."'";
попробуйте это
$ttquery = sprintf("Update login SET ".$row['ttemail']." = '1' WHERE username = '" . $row['username'] ."'"
i.e., username = '[ваше значение]'