默认图像如果文件不存在mysql pdo

时间:2013-04-25 07:15:19

标签: mysql pdo

如果文件不存在,我正在尝试在查询中添加默认图像。 当查询没有while循环时,我成功了。但是因为我需要循环这个值。我想将默认图像添加到查询中。

我不会收到任何错误,只是从我的数据库中打印出一些随机信息。

function fetch_tweets($uid){ 
    $uid = (int)$uid;
    $query = $this->link->query
         ("SELECT user.id, user.email, user.username,  tweets.message, tweets.date, 
          userdetails.profile_img, userdetails.firstname, userdetails.lastname, 
          following.id, following.user_id, following.follow_id
    FROM user
    LEFT JOIN 
        following ON user.id = following.user_id 
    JOIN userdetails ON user.id = userdetails.user_id
    JOIN tweets ON userdetails.user_id = tweets.user_id
    WHERE user.id='{$uid}'  
    OR 
            user.id IN (SELECT follow_id 
    FROM following 
    WHERE 
        following.user_id = '{$uid}' )  
    GROUP BY tweets.date ORDER BY tweets.date DESC "
    ); 

     $tweet = array();
     while(($row = $query->fetch(PDO::FETCH_ASSOC)) !==FALSE) { 
     $tweet[] = $row;
     $tweet['profile_img'] = (file_exists("img/{$uid}.jpg")) ?
     "img/{$uid}.jpg" :  "img/default.jpg" ;

}   
    return $tweet; 
}

1 个答案:

答案 0 :(得分:1)

你在循环中以错误的方式使用变量$ tweet。

以下行将向数组$ tweet添加一个新元素:

$tweet[] = $row;

以下行更新$ tweet数组中名为“profile_img”的元素:

$tweet['profile_img'] = "...";

但我想,你想要的是这样的:

while(($row = $query->fetch(PDO::FETCH_ASSOC)) !== FALSE) { 
    // Update the value for profile_img in the row
    $row['profile_img'] = file_exists("img/{$uid}.jpg") ? "img/{$uid}.jpg" :  "img/default.jpg" ;
    // Add the manipulated row to the $tweet-array
    $tweet[] = $row;
}

请使用xdebug之类的调试器进行测试(如果你不熟悉PHP,可能有点复杂)或者只使用var_dump();.你很快就会发现......