Php 使用Mysql 5.7和Ubuntu 16.04进行分组不工作

Php 使用Mysql 5.7和Ubuntu 16.04进行分组不工作,php,mysql,Php,Mysql,我有这样的Sql查询 SELECT sig_name, sig_class_id, label, sig_priority, status, COUNT(*) as c FROM acid_event GROUP BY sig_name while ($row = mysqli_fetch_array($data, MYSQLI_ASSOC)) { if($row['status']==0 && $row['label']=='High'){

我有这样的Sql查询

SELECT sig_name, sig_class_id, label,  sig_priority, status, COUNT(*) as c FROM acid_event GROUP BY sig_name
while ($row = mysqli_fetch_array($data, MYSQLI_ASSOC)) {
        if($row['status']==0 && $row['label']=='High'){
        echo $row['c']." ".$row['sig_name']." ".$row['label']."<br>"; //Here is your count
        $content = "ALARM\n ". $row['sig_name'] . "\nTotal : ". $row['c']. "\nLabel : " .$row['label'];
        sendMessage($chatid, $content, $token);
        $upstatus = mysqli_query($conn, "UPDATE acid_event SET status = '1' WHERE sig_class_id = '$row[sig_class_id]' AND sig_priority = '$row[sig_priority]'");
    }
    }
代码是这样的

SELECT sig_name, sig_class_id, label,  sig_priority, status, COUNT(*) as c FROM acid_event GROUP BY sig_name
while ($row = mysqli_fetch_array($data, MYSQLI_ASSOC)) {
        if($row['status']==0 && $row['label']=='High'){
        echo $row['c']." ".$row['sig_name']." ".$row['label']."<br>"; //Here is your count
        $content = "ALARM\n ". $row['sig_name'] . "\nTotal : ". $row['c']. "\nLabel : " .$row['label'];
        sendMessage($chatid, $content, $token);
        $upstatus = mysqli_query($conn, "UPDATE acid_event SET status = '1' WHERE sig_class_id = '$row[sig_class_id]' AND sig_priority = '$row[sig_priority]'");
    }
    }
while($row=mysqli\u fetch\u数组($data,mysqli\u ASSOC)){
如果($row['status']==0&&$row['label']==High')){
echo$row['c'].''.$row['sig_name'..''...$row['label'.]。
;//这是您的计数 $content=“ALARM\n”。$row['sig_name']。”\n总计:“..$row['c']。”\n标签:“..$row['label']; sendMessage($chatid,$content,$token); $upstatus=mysqli_query($conn,“更新acid_事件集状态='1',其中sig_类_id='$row[sig_类_id]'和sig_优先级='$row[sig_优先级]”; } }
但是没有错误,也没有输出(代码不执行)。我的代码有问题吗? 我想让输出像“SIG名称:XXXX和总数:xxx”

我被

更新:如果我通过phpmyadmin执行该sql,则输出为

尝试在具有多个可能结果的列上使用
max()
,或者使用聚合函数
查询运行正常吗?如果您尝试以下方法:

while ($row = mysqli_fetch_array($data, MYSQLI_ASSOC))
{
    if($row['status']==0 && $row['label']=='High')
    {
        echo $row['c']." ".$row['sig_name']." ".$row['label']."<br>";
        $content = "ALARM\n ". $row['sig_name'] . "\nTotal : ". $row['c']. "\nLabel : " .$row['label'];
        sendMessage($chatid, $content, $token);
        $upstatus = mysqli_query($conn, "UPDATE acid_event SET status = '1' WHERE sig_class_id = '" . mysqli_real_escape_string($row['sig_class_id']) . "' AND sig_priority = '" . mysqli_real_escape_string($row['sig_priority']) . "'");
    }
}
while($row=mysqli\u fetch\u数组($data,mysqli\u ASSOC))
{
如果($row['status']==0&&$row['label']==High'))
{
echo$row['c'].“”.$row['sig_name'].“”.$row['label']。“
”; $content=“ALARM\n”。$row['sig_name']。”\n总计:“..$row['c']。”\n标签:“..$row['label']; sendMessage($chatid,$content,$token); $upstatus=mysqli_query($conn,“updateacid_事件集状态='1',其中sig_class_id=”)。mysqli_real_escape_字符串($row['sig_class_id'])。“'和sig_priority=”。mysqli_real_escape_字符串($row['sig_priority'])。”); } }
回答@danblack评论中提到的问题

您被一个查询禁用,该查询按
sig\u name
分组,并且在结果集中有
sig\u class\u id
label
sig\u priority
,但不在
groupby
中。更改sql_模式只会隐藏可能会得到错误结果的问题。可能会向我们显示一些示例输入数据和预期的输出。您当前的
分组依据
查询基本上无效,因为您选择的是非聚合列。@danblack我在phpmyadmin中运行该查询没有错误,并且显示输出(查看更新问题)。如果您只需要
sig\u名称
和计数,则使用
选择sig\u名称,计数(*)按sig\U名称从acid\U事件组中提取的总计
。这应该行得通。啊,因此您可以在查询中使用
WHERE status=0和label=“High”
,并在PHP中保留
if
语句。这仍然将
sig\u priority
作为一个未分组的字段,可能
MAX(sig\u priority)
是这个结果字段的正确选择。我认为查询不起作用,我的代码不执行while或sendMessage函数注意,尝试提供引用的MySQL主要版本的链接(标题中)。在这一页上没有太大的区别,但对于其他答案可能有。