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構文にエラーがあります。対応するマニュアルを確認してください
'REPLACEの近くで使用する正しい構文については、MySQLサーバーのバージョンに変更してください)
1行目のVALUES('bad1'、'replace1')'

どうしたの??

$tmp->=それは賢いテンプレートクラスであり、問​​題なく動作します

BAD_WORDSテーブル=ID,BAD_WORD,REPLACE

4

2 に答える 2

3

Replace は MySQL の予約語です。それを引用符で囲んでみてください(これらの`)。VALUE にも S が必要です

そのようです:

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 に答える