php mysql如果row为空且if不为空

时间:2013-08-20 09:24:18

标签: 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 } ?>

所以我希望来自特定用户名(例如:db['article'])的行($db['subject']$Username = $_SESSION['VALID_USER_ID'];)如果不为空则回显信息,否则如果为空则回显例如“你没有添加任何文章!”

如果代码工作的行中有一些信息,则回显信息但是如果行为空则不回显任何内容,代码应该回显“你没有添加任何文章!”但这条线没有出现,哪里出错了?

我尝试过!isset!empty!is_null,但不起作用。

6 个答案:

答案 0 :(得分: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!";
}

?>

答案 1 :(得分:2)

我不明白。你有用户名的文章行,但没有文章,即:

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

如果是这样,你可以测试:

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

否则,如果你没有user = x的行,当没有记录时,mysql将返回一个空的结果。

所以,基本上,如果在选择中找不到行:SELECT * FROM article_table WHERE Username = 'X';,则可以测试

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

但是,不推荐使用mysql_函数。看看准备好的陈述。

答案 2 :(得分:0)

您的if声明中存在逻辑错误 - 您想要检查文章和主题是否都已设置。

使用当前代码,您将$db['article']$db['subject']进行比较,并检查结果是否已设置。你需要稍微改变一下:

而不是:

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

尝试:

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

答案 3 :(得分:0)

我会做这样的事情:

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


?>

答案 4 :(得分: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循环中回显“no articles”,只有当查询返回信息时才会到达那里,这就是为什么如果它返回1行或更多行,$ i将变为1,否则它将保持为0。

答案 5 :(得分:-1)

在你的情况下:

$numArticles = mysql_num_rows($q);

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

我建议您继续使用PDO与DB进行通信。