开发者

Where to check for any results

Ok so I have 2 classes. Photo class and PhotoMapper class.

Photo class contains all the values and outputs them.

PhotoMapper sets the values to the Photo class, by a assign class, like this:

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

And the assign:

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

Now where would i check for if $query->rowCount() > 0 ?

Should i inside is_array after the foreach, make a $this->rowCount = .. ?

What would be best to perform this check? I would like to check for the rowCount outside of both classes开发者_运维知识库..

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

Is how it looks outside the classes. How can i check and output error if select(which is the query above) didnt find any rows?

I would need to have 2 queries? One to check, and one to select them? or?..


Well, if you're expecting data from the fetch operation but there isn't any (you could simply find out by checking if $data has any contents), you should throw an Exception. The following code snippet would typically be placed before the fetch:

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

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

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

However, if you want the code to continue regardless, you can reverse the if condition, and put the assign call inside the statement;

$query->execute();

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜