这个MySQL查询和PHP foreach有什么问题

时间:2017-03-31 07:28:14

标签: php mysql

请帮助我了解这个PHP / MySQL查询有什么问题。

这是我的频道表:

name    url              id      key
BBC2    http://url.com/2 BBC2   2
BBC1    http://url.com/1 BBC1   1

这有效:

$getchans = "SELECT * FROM channels";  
$channels = mysqli_query($db,$getchans);    
foreach ($channels as $channel)
{
    // do stuff 
}

这不起作用:

$getchans = "SELECT * FROM channels ORDER BY key ASC";  
$channels = mysqli_query($db,$getchans);    
foreach ($channels as $channel)
{
    // do stuff 
}

并提供错误Warning: Invalid argument supplied for foreach()

任何人都可以告诉我为什么在订购MySQL查询/结果时它不起作用?

谢谢。

3 个答案:

答案 0 :(得分:2)

esacepe Key Keyword,refer

$getchans="SELECT * FROM channels ORDER BY `key` ASC";  

答案 1 :(得分:0)

key是mysql中的关键字,因此您需要在查询中使用``quotes。

$ getchans =“SELECT * FROM channels ORDER BY key ASC”;

答案 2 :(得分:0)

您的查询失败,因为key是SQL中的保留关键字。尝试将列key的名称更改为其他名称。还有一个包含所有重新关键字的非常有用的列表。

如果您不喜欢此列的其他名称,可以尝试使用以下查询转义它:

SELECT * FROM channels ORDER BY `key` ASC

可以在https://dev.mysql.com/doc/refman/5.7/en/keywords.html

上找到包含保留关键字的列表

古德勒克!