我遇到一个问题,Group By在我的本地主机上的PHP代码中没有工作,但是当我在终端和mySQLworkbench中将其作为查询运行时,它可以正常工作。这是针对网站上的库存功能。
这是有问题的代码行:
SELECT i.id, i.itemID, ii.name, ii.category, ii.rarity, ii.image
FROM inventory AS i
LEFT JOIN items AS ii ON i.itemID = ii.itemID
WHERE userID = 1
GROUP BY i.itemID ORDER BY i.id DESC LIMIT 1, 5
我尝试做的是在PHP中运行它,就像我们运行具有多个结果的查询一样,并输出每一行(使用foreach)。
如果我把GROUP BY拿出来,那么查询在PHP中运行正常,但不幸的是,我需要GROUP BY,并且我将来还需要它来获取其他功能。
我正在运行mysql 5.7.21 Homebrew如果重要且PHP 5.6(网站有点旧)。
查询在网站的生产和开发服务器上运行。
修改 忘了提,我试过运行这段代码 - 没有解决问题:
SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
修改 这是PHP代码:
$items = database::retrieveAllRows( database::query("
SELECT i.id, i.itemID, ii.name, ii.category, ii.rarity, ii.image
FROM inventory AS i LEFT JOIN items AS ii ON i.itemID = ii.itemID WHERE userID = %u
GROUP BY i.itemID ORDER BY i.id DESC LIMIT $limit, $pageLimit", $id) );
retrieveAllRows是我们的功能之一:
public function retrieveAllRows ( array $res )
{
if ( $this -> validateResultSet ( $res ) === FALSE )
{
return ( NULL );
}
return ( $res [ 0 ] -> fetchAll () );
}