2011-08-22 54 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); 
}