2013-11-16 2 views
1

Я применил запрос на вставку, но дал ошибку.Вставить запрос не работает

$registerquery = mysql_query("INSERT INTO `registration`(`Activation`) VALUES('".$activation."') WHERE email= '". trim($_POST['email']) ."'"); 
+4

'INSERT'-х не имеют' WHERE' положение. Вы имели в виду использовать 'UPDATE'? – Wrikken

+0

Какова ошибка: вы сначала запустили mysql_connect и выбрали базу данных? Также вы должны изучить другие способы подключения к базе данных sql. Поскольку функции mysql_ обесцениваются. –

+0

Прошедшая немедленная проблема, вы принимаете '$ _POST ['email']' непосредственно без какой-либо фильтрации? Плохая практика. – JakeGould

ответ

1

Используйте оператор обновления вместо INSERT использовать где предложение

$registerquery = mysql_query("UPDATE `registration` 
        SET `Activation` = '".$activation." 
        WHERE email= '". trim($_POST['email']) ."'" 
       ); 
1

проверить это registration (Activation) это не кажется правильным, `должен возможно быть" и, возможно, вы должны начать запрос с @, чтобы избежать SQL инъекций нападения

+0

В тире mysql разрешены обратные тики ('), которые используются для обозначения имен полей, поэтому их нельзя использовать в' registration'. См. Http://stackoverflow.com/questions/261455/using-backticks-around-field-names –

2

если вы хотите просто обновить столбец в таблице, так что вам нужен UPDATE не INSERT.

, а также вы должны дезинфицировать переменную POST для предотвращения инъекции sql.

$email = mysql_real_escape_string($_POST['email'])) ; 

    $registerquery = mysql_query("UPDATE `registration` 
           SET `Activation` '".$activation."' 
           WHERE email= '". trim($email) ."'"); 
  • Пожалуйста, перейдите к PDO или MySQLi, как MySQL уже устарела.
2

Кажется, вы пытаетесь перезаписать существующие значения использовать оператор UPDATE и не INSERT заявление это причина, почему он не работает. INSERT работает, когда вы пытаетесь вставить новое значение, там не должно быть условия (предложение where).

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