2011-08-22 48 views
0

好,所以我有2個班。 Photo類和PhotoMapper類。在哪裏檢查任何結果

照片類包含所有值並輸出它們。

PhotoMapper設定值到圖片類,通過分配類,像這樣:

$query = "SELECT * FROM users"; 
    $query = $this->_pdo->prepare($query); 
    $query->bindValue(":id", $photo->id()); 
    $query->execute(); 
    $data = $query->fetch(); 
    $photo->assign($data); 

而且分配:

public function assign($data){ 
    if (is_array($data)) { 
     foreach ($data as $name => $value) 
     { 
      $this->{'_' . $name} = $value; 
     } 
    } 
} 

現在在哪兒,我會檢查是否$查詢 - > rowCount()> 0?

我應該在foreach後面的is_array中,做一個$ this-> rowCount = ..?

什麼是最好的執行此檢查?我想檢查兩個類以外的rowCount ..

$photo = new Photo($albumID, $photoID, $view, $userID); 
    $photoMapper->select($photo, $view); 

它是如何看起來在類之外。我如何檢查和輸出錯誤,如果選擇(這是上面的查詢)沒有找到任何行?

我需要2個查詢?一個要檢查,一個要選擇它們?或者?

+0

if(is_array($ data)&&!empty($ data)){} – Layke

回答

0

那麼,如果您希望獲取操作中的數據但沒有任何數據(您可以通過檢查$data是否有任何內容來找到),那麼您應該拋出異常。下面的代碼片段通常會被放置前取:

// ... 
$query->execute(); 

if (!($data = $query->fetch())) { 
    throw new Exception('photo could not be loaded'); 
} 

$photo->assign($data);  
// ... 

但是,如果你想與代碼繼續,你可以扭轉if條件,並把語句內分配呼叫;

$query->execute(); 

if (($data = $query->fetch())) { 
    $photo->assign($data); 
}