2015-07-20 149 views
0

我有這個功能,它從數據庫中提取「遊標」並用它來設置一個對象。 我需要包含一個故障保護,如果在數據庫中沒有飛行數據庫,則會使flightsize = 6. 我讀到了我想爲此使用IFNULL,但不幸的是我無法使其工作。 有人可以幫助我嗎?mysql準備了語句IFNULL

此外,使用IFNULL還是爲這個「航班」創建一個新的表格條目以便將來的選擇可行?

public function getFlightSize($gamedata){ 
    $stmt = $this->connection->prepare(
     "SELECT 
      shipid, flightsize 
     FROM 
      tac_flightsize 
     WHERE 
      gameid = ?" 
     ); 

    if ($stmt){ 
     $stmt->bind_param('i', $gamedata->id); 
     $stmt->bind_result($shipid, $flightsize); 
     $stmt->execute(); 

     while($stmt->fetch()){ 
      $flight = $gamedata->getShipById($shipid); 
      $flight->flightSize = $flightsize; 
      $flight->populate(); 
     } 

     $stmt->close(); 
    } 
} 

回答

0
SELECT 
     shipid, IFNULL(flightsize,6) AS flightsize 
    FROM 
     tac_flightsize 
    WHERE 
     gameid = ? 

應該工作,但是如果遊戲ID不存在於你的表,你會得到沒有記錄在所有的回報,你將不得不處理在PHP代碼的情況。