2016-03-01 18 views
0

運行燈棧,現在使用MariaDB而不是MySQL。 我運行一個選擇查詢,但如果沒有返回任何東西,我會得到一個無限的錯誤循環,鎖定我的數據庫服務器並洪泛錯誤日誌。當沒有行時,MariaDB while循環運行

以下是下面的代碼。 使用MYSQL時沒有問題。 所以現在我正在檢查結果中的行數,然後繞過while循環。

我錯過了什麼?我不想重構所有的代碼。

$sql="select COUNT(DISTINCT garmtypeid) as stylecount,garmtypeid as styleid, 
     count(objects.id) as itemqty,objectstyles.code,objectstyles.description, 
     objectstyles.bundleqty,sum(objectstyles.forbiddenitem) as forbiddenitem, 
     objectstyles.altdescription 
    from objects 
    left join objectstyles on objectstyles.id = objects.garmtypeid 
    where rfid in ($Taglist2) 
    group by garmtypeid "; 
error_log("BUNDLLLE"); 
error_log($sql); 

     $result = mysql_query($sql); 

while (($rowx =mysql_fetch_assoc($result))!==false) 
{....} 

回答

0

表達$rowx =mysql_fetch_assoc($result)是分配不嚴格等同於false,因此創建無限循環。然而,它可能與鬆散的比較(!=而不是!==)。實際上,由於mysql_fetch_assoc()在成功時返回非空數組,失敗時返回false,所以根本不需要進行比較。

請參閱有關type comparisons的文檔以獲取完整參考。

0

(其它問題)

COUNT(DISTINCT garmtypeid) as stylecount 
... 
group by garmtypeid 

- >

COUNT(*) as stylecount 
... 
group by garmtypeid 

你需要LEFT

不是使用mysql_*接口;切換到mysqli_*PDO