0

我有一个 sql 查询,但我想确定如果有人没有上传头像(avatar_filename),它会显示一个替代头像(/images/avatars/default.jpg)。

我一直在看这个网站上的条件,并试图使用它们但没有成功。

这是我目前的工作查询:

$query =   "SELECT exp_forum_topics.last_post_author_id, exp_forum_topics.title, exp_forum_topics.topic_id, exp_forum_topics.last_post_date, exp_members.member_id, exp_members.screen_name, exp_members.avatar_filename ".
                        "FROM exp_forum_topics, exp_members ".
                        "WHERE exp_forum_topics.last_post_author_id = exp_members.member_id ".
                        "ORDER BY exp_forum_topics.last_post_date DESC ".
                        "LIMIT 4";

$result = mysql_query($query) or die(mysql_error());

   while ($row = mysql_fetch_array($result)) {

    echo '<img src="/images/avatars/';
    echo $row['avatar_filename'];
    echo '" />';

    echo "<h3><a href='/forum/viewthread/";
    echo $row['topic_id'];
    echo "'>";
    echo $row['title'];
    echo "</a></h3>";

    echo "<p>by <a href='/forum/members/";
    echo $row['last_post_author_id'];
    echo "'>";
    echo $row['screen_name'];
    echo "</a></p>";
 }
4

4 回答 4

1

您是否考虑过将表中的字段(列)设置为默认值?例如 DEFAULT='my-image.jpg' 或类似的东西?

于 2013-08-02T03:39:26.960 回答
1

在列数据库中定义默认值。

或者...

if (!isset($row['avatar_filename']) {
    echo 'default_avatar.png';
} else {
    echo $row['avatar_filename'];
}
于 2013-08-02T03:44:54.180 回答
0

你可以在 SQL 中处理这个

在选择列表中,只需替换:

 exp_members.avatar_filename

有类似的东西:

 COALESCE(NULLIF(exp_members.avatar_filename,''),'default.jpg') 
   AS avatar_filename

这相当于:

 CASE WHEN exp_members.avatar_filename <> ''
      THEN exp_members.avatar_filename
      ELSE 'default.jpg'
 END AS avatar_filename

这实质上是通过在列等于或等于空字符串'default.jpg'时返回该值来模拟具有默认值的列。NULL''

于 2013-08-02T03:44:44.780 回答
0

您可以检查返回的值是否为空并设置默认图像,如下所示:

if (!empty($row['avatar_filename'])) {
  echo '<img src="/images/avatars/';
  echo $row['avatar_filename'];
  echo '" />';
} else {
  echo '<img src="/images/avatars/default.jpg" />';
}
于 2013-08-02T03:45:55.780 回答