-1

如果文件不存在,我正在尝试在查询中添加默认图像。当查询没有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; 
}
4

1 回答 1

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();。你很快就会发现...

于 2013-04-25T07:23:46.340 回答