2013-08-02 118 views
0

我有一個sql查詢,但我想確定如果有人不上傳頭像(avatar_filename),它會顯示一個替代的頭像(/images/avatars/default.jpg)。MySQL查詢php條件

我一直在看這個網站上是否有條件,並試圖用它們沒有成功。

這是此刻我的工作查詢:

$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>"; 
} 
+0

[**請不要使用'mysql_ * '在新代碼**中的功能](http://bit.ly/phpmsql)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果您選擇PDO,[這裏是一個很好的教程](http://stackoverflow.com/a/14110189/1723893)。 –

回答

0

您可以檢查返回值是空的,設置默認的圖片如下:

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

感謝vinodadhikary,正是我所需要的。完善! –

1

你有沒有考慮用默認值設置在表中的字段(列)?例如DEFAULT ='my-image.jpg'或類似的東西?

+0

+1這是我會做的。只需在該列的SQL模式中定義一個默認值即可。 – Crackertastic

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 

This基本上模擬具有默認值'default.jpg'的列,只要該列是NULL或等於空字符串''就返回該值。

1

在列數據庫中定義默認值。

或者......

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