在哪里检查任何结果

时间:2011-08-22 21:15:01

标签: php

好的,我有2节课。 Photo class和PhotoMapper类。

Photo类包含所有值并输出它们。

PhotoMapper通过assign类将值设置为Photo类,如下所示:

    $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;
        }
    }
}

现在我在哪里检查$ query-> rowCount()> 0?

我应该在foreach之后进入is_array,制作一个$ this-> rowCount = ..?

最好执行此检查?我想检查两个类之外的rowCount ..

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

它是如何在课外看的。如果select(上面的查询)没有找到任何行,我如何检查并输出错误?

我需要2个查询?一个要检查,一个选择它们?或?..

1 个答案:

答案 0 :(得分:0)

好吧,如果你期望来自fetch操作的数据但是没有(你可以通过检查$data是否有任何内容来查找),你应该抛出异常。以下代码段通常放在fetch:

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

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

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

但是,如果您希望代码继续运行,则可以反转if条件,并将assign调用放在语句中;

$query->execute();

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