Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 仅sql模式完全分组依据_Php_Sql - Fatal编程技术网

Php 仅sql模式完全分组依据

Php 仅sql模式完全分组依据,php,sql,Php,Sql,我对sql\u mode=only\u full\u group\u by有问题。这个问题将出现在一些windows计算机上,但其他一些计算机和服务器上,我没有遇到任何相关问题 因此,我通过以下代码获得sql\u mode=only\u full\u group\u错误: $yearMonthTotalyUsers = array(0,0,0,0,0,0,0,0,0,0,0,0); $YearMonthyTotalyUser = mysqli_query($db,"SELECT MONTH(F

我对
sql\u mode=only\u full\u group\u by
有问题。这个问题将出现在一些windows计算机上,但其他一些计算机和服务器上,我没有遇到任何相关问题

因此,我通过以下代码获得
sql\u mode=only\u full\u group\u
错误:

$yearMonthTotalyUsers = array(0,0,0,0,0,0,0,0,0,0,0,0);

$YearMonthyTotalyUser = mysqli_query($db,"SELECT MONTH(FROM_UNIXTIME(user_registered))+1, count(*) 
FROM dot_users
WHERE YEAR(FROM_UNIXTIME(user_registered)) = YEAR(CURDATE())
group by MONTH(FROM_UNIXTIME(user_registered))
ORDER BY MONTH(FROM_UNIXTIME(user_registered))
") or die(mysqli_error($db)); 
while ($row = mysqli_fetch_array($YearMonthyTotalyUser, MYSQLI_NUM)) {  
    $yearMonthTotalyUsers[$row[0]] = $row[1];  
}
任何人都可以帮助我为什么会遇到这个问题以及如何解决它

以下是完整的错误消息:

Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'data.dot_users.user_registered' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
您的MySQL版本存在“错误”,它要求SELECT列名/别名/表达式与仅使用sql模式的GROUP BY相同\u FULL\u GROUP\u BY
您可以尝试用传递的表/子查询方法包装它

SELECT 
   user_registered_month + 1
 , `count`
FROM (

SELECT MONTH(FROM_UNIXTIME(user_registered)) AS user_registered_month, count(*) AS `count`
FROM dot_users
WHERE YEAR(FROM_UNIXTIME(user_registered)) = YEAR(CURDATE())
group by MONTH(FROM_UNIXTIME(user_registered))
ORDER BY MONTH(FROM_UNIXTIME(user_registered))

) AS alias
或者,如果数据库支持,这也是可能的,例如MySQL支持这种别名的重用

SELECT 
   user_registered_month + 1
 , `count`
FROM (

SELECT MONTH(FROM_UNIXTIME(user_registered)) AS user_registered_month, count(*) AS `count`
FROM dot_users
WHERE YEAR(FROM_UNIXTIME(user_registered)) = YEAR(CURDATE())
group by user_registered_month
ORDER BY user_registered_month

) AS alias

@ErayBalkanli我在问题中添加了完整的错误消息。我真的很惊讶full group by mode不支持
group by
键上的表达式。“我真的很惊讶full group by mode不支持group by键上的表达式。”是的,我也是@GordonLinoff,因为我无法重新编译它。。MySQL seams支持sql模式的表达式,仅支持从MySQL 5.5到MySQL 8的完整分组。。看起来topicstarter MySQL版本有漏洞或者类似的东西。。