如果文件不存在,我正在尝试在查询中添加默认图像。 当查询没有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;
}
答案 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();.你很快就会发现......