2013-08-20 4 views
0

코드 : 정보의 경우 반향 :PHP는 MySQL은 행은 비어 있고 경우 비어 있지 않은 경우

$Username = $_SESSION['VALID_USER_ID']; 

    $q = mysql_query("SELECT * FROM `article_table` 
         WHERE `Username` = '$Username' 
         ORDER BY `id` DESC"); 

    while($db = mysql_fetch_array($q)) { ?> 

     <?php if(!isset($db['article'] && $db['subject'])) { 
      echo "Your articles"; 
     } else { 
      echo "You have no articles added!"; 
     } ?>  

    <?php } ?> 

그래서 내가 ($Username = $_SESSION['VALID_USER_ID']; 참조) 특정 사용자 이름에서 예 (db['article']$db['subject'])에 대한 행을 원하는 비어 있지 않습니다. 예를 들어 "비어있는 기사가 없습니다!"와 같이 비어있는 경우 비어 있습니다.

행에 정보가있는 경우 코드가 작동하지만 정보가 표시되지만 행이 비어 있으면 아무 것도 울리지 않고 코드에 "기사가 없습니다"라는 메시지가 표시됩니다. 그러나이 선은 나타나지 않습니다, 실수는 어디에 있습니까?

!isset, !empty, !is_null으로 시도했지만 작동하지 않습니다.

+1

는 isset'의 구문()'만'처럼, 1 개 인수를 취하는 경우 (는 isset ($ DB를 [ '기사']) && ! isset ($ db [ 'subject']))' – DanFromGermany

답변

6

나는 당신이 달성하려고하는 것은 생각한다!

$Username = $_SESSION['VALID_USER_ID']; 
$q = mysql_query("SELECT * FROM `article_table` WHERE `Username` = '$Username' ORDER BY `id` DESC"); 

if(mysql_num_rows($q) > 0) 
{ 
    echo "Your articles:\n"; 
    while($db = mysql_fetch_array($q)) { 
     echo $db['subject']." ".$db['article']."\n";  
    } 
} 
else 
{ 
    echo "You have no articles added!"; 
} 

?> 
+0

This Works! 감사! –

0

if 문에 논리 오류가 있습니다. 원하는 것은 기사와 제목이 모두 설정되어 있는지 확인하는 것입니다.

현재 코드의 경우 $db['article']$db['subject']을 비교하여 결과가 설정되어 있는지 확인하십시오. 대신

:

if(!isset($db['article'] && $db['subject'])) { 

시도가 :

if(isset($db['article']) && isset($db['subject'])) ... 
2

이해가 안 당신은 조금 변경해야합니다. 당신은 사용자 이름으로 문서 행이 없지만, 기사없이, 즉 :

| id | user | article | 
------------------------------------- 
| 1 |  X  |  NULL | 

그렇다면, 당신이 테스트 할 수 있습니다 : 당신이 사용자와의 행이없는 경우, 그렇지 않으면

if($db['article'] == NULL) { .... } else { .... } 

= X , 레코드가 없을 때, mysql은 빈 결과를 리턴 할 것이다. 어떤 행이 선택에 발견되지 않으면

그래서, basicly : SELECT * FROM article_table WHERE Username = 'X';, 당신은 그러나

if(mysql_num_rows($q) > 0) { .... } else { .... } 

을 테스트 할 수 있습니다, mysql_로 기능은 더 이상 사용하지 않는 것이 좋습니다. 준비된 진술을보십시오. 귀하의 경우에는

$articles=''; 
$Username = $_SESSION['VALID_USER_ID']; 
$q = mysql_query("SELECT * FROM `article_table` WHERE `Username` = '$Username' ORDER BY  `id` DESC"); 
while($db = mysql_fetch_array($q)) { 

if(isset($db['article']) && isset($db['subject'])) { 
$articles .= $db['article']."<br/>"; 
}   

} 


if($articles != ''){ 
echo $articles; 
} 
else{ 
echo "No articles"; 
} 


?> 
+0

나는 어쨌든 준비된 진술을 찾을 것이다! –

0

나는 같은 것을 할 것

$numArticles = mysql_num_rows($q); 

if($numArticles > 0) 
echo 'Your articles'; 
else 
echo 'No articles :(((('; 

나는 DB와 통신 할 수 PDO로 이동하기 힘든 것이 좋습니다. 당신이 원하는 것을 달성하기 위해

-1

:

+0

첫 번째 문은 항상 true로 평가됩니다. http://php.net/manual/en/function.mysql-num-rows.php –

0

가장 빠른 방법은 쿼리가 모든 행 반환 있는지 확인하는 변수를 추가하는 것입니다 :

<?php   $Username = $_SESSION['VALID_USER_ID']; 
    $i = 0; 
    $q = mysql_query("SELECT * FROM `article_table` WHERE `Username` = '$Username' ORDER BY `id` DESC"); 
    while($db = mysql_fetch_array($q)) { 
    $i = 1; 
    if(!isset($db['article'] && $db['subject'])) { echo "Your articles"; } ?>   
    <?php } 
    if ($i == 0) echo "You have no articles"; 
?> 

당신은 while 루프에서 "어떤 기사를"에코없는 노력을, 당신은 단지 거기에 도착 쿼리가 정보를 반환하면 1 행 이상을 반환하면 $ i는 1이되고 그렇지 않으면 0이됩니다.

관련 문제