0

我有这个 php 代码:

$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');
  }
}

但是当我测试它时,我发现了这个错误:

您的 SQL 语法有错误;检查相应的手册
到您的 MySQL 服务器版本,以便在 'REPLACE) 附近使用正确的语法
第 1 行的 VALUES('bad1','replace1')'

有什么问题??

$tmp->= 它是聪明的模板类,可以毫无问题地工作

BAD_WORDS表 =ID,BAD_WORD,REPLACE

4

2 回答 2

3

Replace 是 MySQL 中的保留字。尝试在它周围加上引号(这些`)。您还需要一个 S in VALUE

像这样:

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

您可以在此处查看 MySQL 查询中的所有保留字:http: //dev.mysql.com/doc/refman/5.5/en/reserved-words.html

编辑:

$db->query("INSERT INTO `BAD_WORDS` (`BAD_WORD`,`REPLACE`) VALUES ('$new_bad','$new_replace')");
于 2012-05-10T07:48:42.507 回答
0

在你的表结构中我看到

ID,BAD_WORD,REPLACE

id 字段也需要一个值,因此请替换:

$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 是自动递增的,否则给 id 一个值。

于 2012-05-10T07:51:45.890 回答