簡體   English   中英

PHP MySQL的如果行為空,如果不為空

[英]php mysql if row is empty and if isn't empty

碼:

   $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'] )在不為空的情況$Username = $_SESSION['VALID_USER_ID'];顯信息否則,如果為空則回顯,例如“您沒有添加文章!”

如果代碼行中包含某些信息,則回顯信息,但如果行為空,則不回顯任何內容,代碼應回顯“您沒有添加任何文章!”。 但是這條線沒有出現,哪里出了錯?

我嘗試過!isset!empty!is_null但是不起作用。

我認為您要實現的目標是:

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

?>

我不明白 您是否有帶有用戶名但沒有文章的文章行,即:

|   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_函數。 查看准備好的語句。

if語句中存在邏輯錯誤-您要檢查是否同時設置了文章和主題。

使用當前代碼,將$db['article']$db['subject'] ,並檢查結果是否已設置。 您需要對其進行一些更改:

代替 :

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

嘗試:

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

我會做這樣的事情:

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


?>

實現所需目標的最快方法是添加一個變量,該變量將驗證查詢是否返回了任何行:

<?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。

在您的情況下:

$numArticles = mysql_num_rows($q);

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

我建議您繼續使用PDO與數據庫進行通信。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM