2016-11-06 60 views
-4

我在查询中收到错误,但无法检测到问题的根源。在查询中找不到结果

下面是查询: -

$query = "SELECT useraccount.Username, tariff.Name as tariffs, 
    sum(energyconsumption.ElecEnergy) 
    FROM useraccount 
    INNER JOIN tariff 
ON useraccount.tariffs = tariff.id 
INNER JOIN energyconsumption 
ON energyconsumption.User = useraccount.id 
WHERE Date = CURRENT_DATE 
GROUP BY useraccount.Username, tariff.Name as tariffs"; 

继我已经存储在阵列中输出码查询:

$result = mysqli_query($conn,$query); 
     $r = array(); 
     if($result->num_rows){ 

       while($row = mysqli_fetch_array($result)){ 
       array_push($r, array('Username' => $row['Username'], 
       'TariffName' => $row['tariffs'], 'ElecConsump' => $row['ElecEnergy'] 


       )); 

       } 

     } echo json_encode(array('results' => $r)); 

即时得到以下行错误:如果( $ result-> NUM_ROWS)

这是在执行查询时的输出:

说明:试图让非对象的属性在C:\ XAMPP \ htdocs中\项目\客户端\ newone.php上线22 { “成果”:[]}

请注意:

这是输出我intially有:

{"results":[{"Username":"absc868","TariffName":"s1","ElecConsump":"2000"}, 
{"Username":"absc868","TariffName":"s1","ElecConsump":"1900"}]} 

但随着我在上面写了这个新的查询,我想生产这种输出 我试图产生以下的输出: = {“成果”:[{“用户名” :“absc868”,“TariffName”:“s1”,“ElecConsump”:“3900”}

有鉴于此,一个结果集只有1项,输入用户名,关税和elecconsump,而不是2项为用户名,关税和elecconsump

再次感谢所有那些谁已经阅读并促成此线程

+0

直接运行查询到phpmyadmin并检查它在那里工作或给出任何错误? –

+0

非对象表示您的查询失败;检查错误'mysqli_error($ conn)'。 –

+0

搜索谷歌上的错误消息,你会发现许多*很多*,***许多***重复的问题。问题是数据库查询失败。假设成功之前,您需要检查数据库中的错误。 – David

回答

1

一个问题是asGROUP BY。我建议你使用表别名:

SELECT ua.Username, t.Name as tariffs, 
     SUM(ec.ElecEnergy) as ElecEnergy 
FROM useraccount ua INNER JOIN 
    tariff t 
    ON ua.tariffs = t.id INNER JOIN 
    energyconsumption ec 
    ON ec.User = ua.id 
WHERE Date = CURRENT_DATE 
GROUP BY ua.Username, t.Name; 
+0

嗨,我刚刚尝试过,它可以工作90%。我得到正确的输出用户名和关税,但是对于elecconsump,它给了我一个空值。包含所有能源消耗值的表的名称是“energyconsumption” – Mahbs

+0

,因为您没有给它任何名称。使用'SUM(ec.ElecEnergy)AS elecconsump'并在你的PHP代码中,你可以使用'$ row ['elecconsump']' – Dekel

+0

@Dekel,嗯,我试过了,但是我仍然得到一个空值它。 – Mahbs