2012-01-29 89 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)字符,而不是一个数字, 你必须在脚本中用引号括起来。