2010-09-18 105 views
0

好吧我一直在使用PHP + MySQL一段时间,所以我认为自己精通。我做了我的语法错误公平的份额在过去,但这是实话得罪我了:PHP/MySQL插入

http://img251.imageshack.us/img251/3760/fubar.png

如果有人能告诉我为什么这个简单的说法是不工作,我会非常赞赏。

+0

面值,这没有什么不对......你究竟得到了什么错误?你使用变量而不是静态值吗? – 2010-09-18 20:32:38

+0

定义“不工作”。你用过mysql_error()吗?它说什么? – halfdan 2010-09-18 20:32:42

+0

什么都没有发生。没有错误。数据库中没有添加任何内容。 – 2010-09-18 20:34:46

回答

6

其实我看到1个错误...“选项”是一个保留字。将其包含在backtics中:`Option`或更好,将列名更改为不是保留字的内容。

+0

正是这个问题。谢谢。 – 2010-09-18 20:38:07

2

看着你试图插入什么来自$ _ POST [“调查”],所以你插入应该是这样的代码:

$vote = $_POST['survey']; 

// connect to db 

mysql_query(sprintf(
    "INSERT INTO poll (`Option`) VALUES ('%s')", 
    mysql_real_escape_string($vote) 
); 

另外请注意,“选项”是保留关键字并需要在反引号内。

+0

你忘了'sprintf' :) – Fanis 2010-09-18 20:42:07

+0

@Fanis:上帝,真是FAIL :-(修正了它, – halfdan 2010-09-18 21:08:55

3

对'选项'使用反引号。

INSERT INTO poll (`Option`) VALUES ('Stuff') 
+0

或者只是'INSERT INTO poll VALUES('Stuff')'。没有必要指定列名 – 2010-09-18 20:39:35

+0

@ Mark Snidovich - 当然,如果你打算为每一列提供值(以及按照正确的列顺序),那么这只是真的。一般来说,这并不是很好的做法,因为如果你决定在后面添加另一列,对于其他一些脚本......它会打破这个声明 – 2010-09-18 20:43:03

+0

@蜡笔这是真的,但在这种情况下,表只有一列。这就是我做事的方式,通常 - 为每列提供一个值,如果我改变表格,我最好小心点,不过,我想这取决于你是否想要弹性,或者宁愿被迫在所提供的值中做到精确。 – 2010-09-19 02:18:25