2012-05-02 4 views
0

У меня ошибка в выражении $ sql на выходе.Заявление о запросе mySQL

У вас возникла ошибка в синтаксисе SQL; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом с «» в строке 1" Это относится к пользователям UPDATE SET activationkey заявления.

$query = "SELECT * FROM users"; 

    $result = mysql_query($query) or die(mysql_error()); 

     while($row = mysql_fetch_array($result)){ 

if ($queryString == $row["activationkey"]){ 
$sql="UPDATE users SET activationkey = '', status='activated' WHERE (id = $row[id])"; 

    if (!mysql_query($sql)) { *die('Error: in activation' . mysql_error());} 
} 
} 

Я не знаю, почему этот синтаксис неправильно

+2

'echo $ sql;' пожалуйста. – Sampson

+1

Помимо вашей проблемы, вы должны использовать mysqli или PDO. Посмотрите http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers для PDO – simshaun

+0

Пользователи UPDATE SET activationkey = '', status = 'activated' WHERE (id =) О, я ничего не получаю от $ row [id]. –

ответ

0
$query = "UPDATE `users` SET `activationkey` = '', status='activated' WHERE `id` = '$row['id']'"; 

Совет.. Я предлагаю обеспечить свой идентификатор, потому что SQL инъекция может быть сделана в этом запросе, что я имею в виду мгновения говоря WHERE id = «$ строки [» ID «]», используйте WHERE id = (int) ($ row ['id']), Это гарантирует, что в этом запросе указывается только целое число. Если это был stri ng us mysql_real_escape_string ($ row ['string'])

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