【问题标题】:PHP version 7 if I add the GROUP BY I get the error?PHP 版本 7 如果我添加 GROUP BY 我得到错误?
【发布时间】:2018-01-19 13:57:56
【问题描述】:

一切正常,但如果我将 GROUP BY messagesuserone 添加到 ORDER BY messagedate DESC,我会收到错误 Trying to get property of non-object in ...。我哪里错了?.....,你能更正代码,看看它看起来如何......拜托,我需要这个,我整天都在争吵...... 拜托,不用过多描述,我的英语不是最好的。谢谢。

PHP 版本:7

表格:

用户

用户名、电子邮件、密码、名字、姓氏、头像

users_residence

users_residenceID、userresidenceID、州、市

users_messages

messagesID、messagesuseroneID、messagesusertwoID、message、messagedate、messageread

if(isset($_SESSION['userID'])){
$user = $_SESSION['userID'];

$sql = "SELECT messagesusertwoID, messagesuseroneID, messagedate,
messageread, SUM(messageread) AS messageread_sum, 
userID, firstname, lastname, avatar, state, city  FROM users_messages 
LEFT JOIN users ON userID = messagesuseroneID 
LEFT JOIN users_residence ON userresidenceID = messagesuseroneID 
WHERE messagesusertwoID = '$user' 
GROUP BY messagesuseroneID ORDER BY messagedate DESC ";
                 $result = $con->query($sql);

                 if ($result->num_rows > 0) {
                 // output data of each row
                 while($row = $result->fetch_assoc())
                     {

                     echo   ''.$row["avatar"].'
                             '.$row["userID"].'
                             '.$row["firstname"].'
                             '.$row["lastname"].'
                             '.$row["state"].'
                             '.$row["city"].'
                             '.$row["messageread_sum"].'';

                 }
                 } else {
                 echo "0 results";
                 }
                 }

【问题讨论】:

  • 如果您显示没有工作的代码会更有帮助
  • 嗯......什么分组?什么是错误?我们不是你知道的读心术。
  • ORDER BY MAX(date)?您如何按列或日期的最大值排序? date 到底是从哪里来的?
  • PHP 无罪。由于GROUP BY,查询变为无效SQL,$con->query($sql) 返回FALSE
  • 您的问题仍然缺少所需的输出。 否则,您的问题就离题了,并且建议进行必要的代码更改的答案是不可能的或推测的。

标签: php mysql group-by greatest-n-per-group


【解决方案1】:

出现在SELECT 子句中但不是对GROUP BY aggregate functions 的调用的所有表达式必须出现在GROUP BY 子句中,或者在功能上依赖于出现在GROUP BY 子句中的表达式。否则GROUP BY 查询是无效的 SQL。

在 5.7.5 版本之前,MySQL 曾经接受无效的GROUP BY 查询,但它保留了对return indeterminate data 的权利。这意味着此类无效查询在针对包含相同数据的不同数据库实例运行时可能会返回不同的结果(例如,您的数据库现在与您的数据库移动到不同的服务器或从备份中恢复)。

由于SQL查询无效,$con->query($sql)returns FALSE和下一条语句($result->num_rows)触发错误。

【讨论】:

  • 在 5.7.5 之前,一切正常,但现在它说;尝试获取非对象的propertj。代码中要更改什么??
  • @aldin_abdagic 你的问题基本上是Where am I wrong?。这个答案完美地回答了它:-)如果您想要代码更改建议修改您的问题,以便您想要的输出变得清晰。否则这个狮子的回答值得接受
  • 在不了解表结构的情况下很难提出解决方案。此外,您没有在问题中提到预期返回的查询是什么。
  • 你能更正代码,看看它的样子吗...拜托,我需要这个,我整天都在争吵..
猜你喜欢
  • 2020-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-28
  • 2016-09-08
  • 1970-01-01
  • 1970-01-01
  • 2021-10-26
相关资源
最近更新 更多