2013-08-02 2 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)를 참조하십시오. 대신 [* prepared statements *] (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 

:

CASE WHEN exp_members.avatar_filename <> '' 
     THEN exp_members.avatar_filename 
     ELSE 'default.jpg' 
END AS avatar_filename 
: 동등의

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

기본적으로 'default.jpg'의 열을 에뮬레이트합니다. 열이 NULL이거나 빈 문자열 ''과 같을 때 해당 값을 반환합니다.

1

열 데이터베이스에 기본값을 정의하십시오.

또는 ...

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