2016-11-06 59 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