简单的mysql选择和插入不工作

时间:2011-07-20 01:21:28

标签: php mysql html

我不知道为什么这不起作用。我从之前的项目中获取了良好的代码。我只想选择特定的列。这就是我想要的......

    $result = mysql_query("SELECT  when, where, name FROM tablename ORDER BY count DESC LIMIT 0, 20");

    //I dont really know how to debug php well, so this is all I have to go by to know if its not working.  
    if (!$result) 
    {
         echo "<p>Page load has failed please try again</p>";
    }

如果我选择所有这样的,它可以正常工作:

$result = mysql_query("SELECT * FROM tablename ORDER BY count DESC LIMIT 0, 20");

如果我正在进行插入,那么也不起作用......

$query = "INSERT INTO tablename (when, where, name) VALUES ('$when' , '$where' , '$name');";
mysql_query($query);

我确信拼写是正确的我已经好几次看过了,即使我把它放了

echo $row["name"]; and the others ect while using the select all * they appear...

当我选择单个列时,它似乎正在发生。

我有其他表,其他网站使用相同的确切代码,并且工作正常。

我该如何解决这个问题?或者至少我如何调试php以获得更好的错误消息?

编辑: 我确信进入的值很好,它只是简单的helloworld字符串 我已经尝试将count包含在需要进行排序的select选项中,但这并没有使它工作。

3 个答案:

答案 0 :(得分:4)

单词where是保留字(WHERESELECTUPDATE查询的DELETE子句。 when也是如此。 count是一个内置函数名称,但可以用作标识符,但不应该。

如果将它用作标识符,则必须始终将其括在查询中的“反引号”中。我建议不要使用部分查询语言作为列名。

http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html

答案 1 :(得分:0)

WHERE,WHEN和COUNT是MySQL词(http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html)。使用这样的反引号。

$result = mysql_query("SELECT `where`, `when`, name FROM tablename ORDER BY `count` DESC LIMIT 0, 20");

答案 2 :(得分:-1)

where是一个保留的sql词,使用tablename.where选择正确的列。