2012-05-10 4 views
0

У меня есть этот PHP код:MySQL ошибка вставки в моей форме

$db = new mysql; 
$new_bad = $_POST['new_bad']; 
$new_replace = $_POST['new_replace']; 
if ($_POST['submit']) { 
    if ($new_bad && $new_replace) { 
    $db->query("SELECT * FROM BAD_WORDS WHERE BAD_WORD='".$new_bad."'"); 
    if ($db->CNrows() == 0) { 
     $db->query(" 
     INSERT INTO BAD_WORDS(BAD_WORD,REPLACE) 
     VALUE('".$new_bad."','".$new_replace."') 
     "); 
     $err = "added succesfully.."; 
     $tmp->assign('msg', 'true'); 
    } else { 
     $err = "the word is in table ..!!"; 
     $tmp->assign('msg', 'false'); 
    } 
    } else { 
    $err = "you must fill all feilds ..!!"; 
    $tmp->assign('msg', 'false'); 
    } 
} 

, но когда я проверить это я нашел эту ошибку:

 
You have an error in your SQL syntax; check the manual that corresponds 
to your MySQL server version for the right syntax to use near 'REPLACE) 
VALUES('bad1','replace1')' at line 1 

чем проблема ??

$tmp-> = это Smarty шаблон класса и работать без проблем

BAD_WORDS стол = ID,BAD_WORD,REPLACE

+0

REPLACE - зарезервированное ключевое слово ... – Mr47

+0

Mr47 - Нет, подумайте, когда я возьму слова, я не нашел проблему –

+1

** Ваш код уязвим для SQL-инъекции. ** Вы ** действительно ** должны использовать подготовленные инструкции, в которые вы передаете свои переменные в качестве параметров, которые не оцениваются для SQL. Если вы не знаете, о чем я говорю, или как это исправить, прочитайте рассказ о [Bobby Tables] (http://bobby-tables.com). – eggyal

ответ

3

Replace зарезервированное слово в MySQL. Попробуйте положить кавычки вокруг него (эти `). Вы также нуждаетесь в S в VALUE

Как так:

INSERT INTO `BAD_WORDS` (`BAD_WORD`,`REPLACE`) VALUES [...] 

Вы можете посмотреть на всех зарезервированных слов в MySQL может опрашивает здесь: http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

EDIT:

$db->query("INSERT INTO `BAD_WORDS` (`BAD_WORD`,`REPLACE`) VALUES ('$new_bad','$new_replace')"); 
+0

ваш код dosen't work –

+0

Я изменил имя feild и мой код теперь работает –

0

В вашей структуре таблиц см.

ID,BAD_WORD,REPLACE 
поле

Идентификатор также нуждается значение так заменить:

$db->query("INSERT INTO BAD_WORDS(BAD_WORD,REPLACE)VALUE('".$new_bad."','".$new_replace."')"); 

с:

$db->query("INSERT INTO BAD_WORDS(ID,BAD_WORD,REPLACE)VALUE('','".$new_bad."','".$new_replace."')"); 

, если идентификатор является автоматическое приращение в противном случае дать ID значение.

+0

id является автоматическим приращением, поэтому я не сделал но это –

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