2012-01-29 124 views
0

我的MYSQL查詢沒有通過我所做的表單正確插入。查詢:MYSQL - 沒有插入數據庫?

mysql_query("INSERT INTO Servers(ip, desc, type, title) 
    VALUES($ip, $desc, $type, $title)" 
) or die(mysql_error()); 

MySQL表如下:

CREATE TABLE IF NOT EXISTS Servers(
    id bigint(20) NOT NULL AUTO_INCREMENT, 
    ip varchar(50) NOT NULL, 
    desc text NOT NULL, 
    type varchar(15) NOT NULL, 
    title varchar(50) NOT NULL, 
    PRIMARY KEY (id) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3; 

我已經在表中的兩個預製的行。表單代碼:

<form action="" method="post"> 
    Title: <input type="text" name="title" /><br /> 
    IP: <input type="text" name="ip" /><br /> 
    Description:<br /> 
    <textarea name="desc"></textarea><br /> 
    Type: <input type="text" name="type" /><br /> 
    <input type="submit" name="submit" value="Submit server!" /> 
</form> 

當我提交的服務器,我收到以下錯誤:

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 'desc, type, 
title) VALUES(a, a, a, a)' at line 1 
+0

順便說一句,你不需要換出方括號的尖括號。只需用四個空格前綴您的html代碼塊,並確保它有一個前後回車。 – halfer 2012-01-29 11:56:44

回答

3

試試這個

mysql_query("INSERT INTO `Servers` (`ip`, `desc`, `type`, `title`) VALUES('".$ip."', '".$desc."', '".$type."', '".$title."')") or die(mysql_error()); 

desc是的MySQL保留關鍵字,所以它不能無需反引號即可使用。

+0

謝謝!我使用了你的答案和羅爾的答案的混合,現在它完美的工作! – 2012-01-29 11:36:23

+0

http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html – Gaurav 2012-01-29 11:36:36

1

將字符串值時,應使用引號:

mysql_query("INSERT INTO Servers(ip, desc, type, title) VALUES('$ip' , '$desc', '$type', '$title')") or die(mysql_error()); 
0

遞減是保留工作,你必須使用``。當你的字段是一個(var)字符,而不是一個數字, 你必須在腳本中用引號括起來。