首页 > 解决方案 > mySQL - Group By 在本地主机上不起作用

问题描述

我有一个问题,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 () );
    }

标签: phpmysql

解决方案


推荐阅读