MySQL查询php条件

时间:2013-08-02 03:37:14

标签: php mysql conditional

我有一个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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

或者...

if (!isset($row['avatar_filename']) {
    echo 'default_avatar.png';
} else {
    echo $row['avatar_filename'];
}

答案 2 :(得分: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或等于空字符串''时返回该值。

答案 3 :(得分:0)

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

if (!empty($row['avatar_filename'])) {
  echo '<img src="/images/avatars/';
  echo $row['avatar_filename'];
  echo '" />';
} else {
  echo '<img src="/images/avatars/default.jpg" />';
}