2016-02-03 59 views
-1

好吧,我不明白为什么这根本不起作用。愚蠢的SQL错误没有线索

$get_data = mysql_query("SELECT * FROM chatbox ORDER BY ID WHERE message = 'bla'"); 
while($data = mysql_fetch_assoc($get_data)) { 
*blablabla code* 
} 

这是行不通的。它给了我一个

“警告:mysql_fetch_assoc():提供的参数不是有效的MySQL结果资源”错误。 (有行数)

当我删除"WHERE message = 'bla'"部分,它工作正常。尝试着或不用周围的东西和周围的消息。消息字段在我的数据库中确实存在,输入bla也是如此。尝试它甚至与我的数据库中的ID字段,编号1,根本不工作。这个简单的代码行有什么问题。试图看看几乎无处不在,无法弄清楚...

+0

停止使用**过时并且PHP7的去除** mysql_ *函数。迁移到PDO并开始使用准备好的语句。 –

+0

如果你要继续使用过时的'mysql_ *'函数,那么你应该学会使用'mysql_error()',即。 '$ get_data = mysql_query(... [你的查询代码] ...)或死(mysql_error()));'学会调试你自己。 – Sean

+0

谢谢Sean,我会将这个东西添加到我未来的代码中。不幸的是,它没有提供解决方案。 (问题已经解决btw)这只是一个与旧软件的爱好项目。所以对我来说这不是什么大问题,如果我使用这样的过时代码。 – Pietertje

回答

3

您在ORDER BY之后使用WHERE子句,它不能为您工作。

修改后的查询:

SELECT * FROM chatbox WHERE message = 'bla' ORDER BY ID 

您需要按照当你弄皱MYSQL SELECT语句序列:

SELECT ..柱。从..其中.. ORDER

SELECT Manual Reference

侧面说明:

请使用mysqli_*PDO代替mysql_*,因为这个扩展过时,在PHP不提供7

+0

非常感谢Devpro和工程师!这就是诀窍!最后我可以走得更远。 – Pietertje

+0

@Pietertje:没问题,错误不能成为愚蠢的兄弟...现在。选择最好的答案并将其标记为已接受..将有助于他人。阅读这篇http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – devpro

1

您的查询是错误的。您在条件之前使用了订单。

尝试此查询:"SELECT * FROM chatbox WHERE message = 'bla' ORDER BY ID"

而且还从迁移到mysql_*mysqli_*