2012-01-27 80 views
0

出於某種原因,它不會進入我的if語句...PHP代碼,跳過如果和直行進入else語句

這可能是一些顯而易見的,但它的後期,我一直在這裏停留了一個半一個小時......

<?php 
      $id = $_GET['id']; 
      if ($id == "") { 
       //it goes here correctly 
      } else { 
       $result = mysql_query("SELECT * FROM posts WHERE id= $id"); 
       if ($result == "0") { 
        //It does not go here. 
       } else { 
        //It goes here correctly 
        } 
       } 
      } 
      ?> 

非常感謝.. - 盧卡

回答

1

如果您的查詢就可以了,然後mysql_query()返回一個資源,$result == "0"false始終。

+0

哦哦gotcha ..我很新的PHP。謝謝 – 2012-01-27 08:30:32

+0

@LucaDeCaprio不客氣。請記住,您始終可以使用'var_dump'來查看變量的含義。 – xdazz 2012-01-27 08:33:02

3

我不知道你爲什麼期望得到0作爲mysql_query的回報值。

From the manual(重點煤礦):

對於SELECT,SHOW,描述,解釋等語句返回的結果集 ,請求mysql_query()返回成功則資源,或 錯誤 FALSE。

[...]

使用mysql_num_rows()來找出有多少行被返回的 SELECT語句或mysql_affected_rows()函數來找出有多少行 受到影響由DELETE,INSERT,REPLACE或UPDATE語句。

如果用戶沒有 有權訪問查詢引用的表,則mysql_query()也將失敗並返回FALSE。

所以,通過猜測,你真正想要的代碼是:

$id = $_GET['id']; 
if ($id == "") { 
    //it goes here correctly 
} else { 
    $result = mysql_query("SELECT * FROM posts WHERE id= $id"); 
    if ($result === false || mysql_num_rows($result) === 0) { 
     //It always goes to else statement. 
    } else { 
     //It goes here correctly 
    } 
} 
+0

謝謝你的完美工作。我對PHP相當陌生。非常感激。 – 2012-01-27 08:30:54

+0

@LucaDeCaprio很高興爲您提供幫助。如果您認爲答案解決了您的問題,那麼您應該將答案標記爲已接受。 – 2012-01-27 09:14:34

0

即使你沒有任何數據爲ID,則返回「真」,因爲你的查詢執行成功。 相反,你可以嘗試這樣的:

$result = mysql_query("SELECT * FROM posts WHERE id= $id"); 
$rows=mysql_num_rows($result); 
if($rows>0){ 
    //you have data to work with 
} 
else{ 
    //no data 
}