2011-02-28 58 views
3

我遇到了一個有關if條件的問題。 (mysql_query) 我在我的數據庫中驗證,如果USER不存在,它會執行else條件。這不是我想要的。我想要它做error_type(...); - >這個函數是我自己創建的一個手動函數。 那就是:PHP和MySQL問題(mysql_query)

else{ 
    var_dump($response); 
    mysql_query("DELETE FROM info_compte WHERE username  ='$user'"); 

    echo "<pre>"; 
     echo "L'utilisateur <b>".$user."</b> a été supprimé avec succès!"; 
    echo "</pre>"; 
} 

這裏是我的完整功能:(爲error_type我這樣做在文件開頭需要)

function db_delete($user, $site){ 

    $querycon = "SELECT username FROM info_compte WHERE username = '$user' AND siteWeb = '$site'"; 
    $response = mysql_query($querycon); 

    if($response > 0) 
     error_type(6, $user,""); 
    else { 
     var_dump($response); 
     mysql_query("DELETE FROM info_compte WHERE username ='$user'"); 
     echo "<pre>"; 
     echo "L'utilisateur <b>".$user."</b> a été supprimé avec succès!"; 
     echo "</pre>"; 
    } 

}//db_delete 

感謝所有的建議

+0

不要,我再說一遍,不這樣做,使用mysql_ *接口。切換到mysqli或PDO。它在最新的PHP版本中已被棄用。 –

回答

2

一查詢哪個返回0結果,是成功的,所以你的$response不會在false狀態。

試試這個:

$querycon = "SELECT username FROM info_compte WHERE username = '$user' AND siteWeb = '$site'"; 
$response = mysql_query($querycon) 
if(mysql_num_rows($response) < 1){ 
... 

mysql_num_rows返回該查詢返回的行數,如果這個數字是0比你的查詢成功,但沒有結果。

考慮這個例子: sql example

在第一個查詢select * from data where id = "notHere";這個查詢成功但是它返回0行,而第二查詢select * from data LIMIT 1;是成功的,並返回1行。

+0

好吧,我正在測試它 – HulkThor

+0

感謝您的信息。它的工作原理:D 我不能添加代表呢..我只有兩個,它需要15 ..我會在4分鐘內接受答案哈哈。 – HulkThor

+0

@HulkThor,沒問題,歡迎來到Stack Overflow。 – UnkwnTech

0

你的問題是這一行:

if(!($response = mysql_query($querycon))){

發生了什麼事是你分配$response等於mysql_query,然後否定它。只要這項任務有效,你總會以虛假結束。

相反,做作業比較假一氣呵成:

if($response = mysql_query($querycon) === false){

有了這個,你說「分配$responsemysql_query值,並比較假。

+0

這是不正確的,首先計算'$ response = mysql_query($ querycon)',並設置$ response,如果失敗,則$ response將處於錯誤狀態。然後!(...)相當於(!$響應)。 – UnkwnTech

0

如何使用PHP的mysql_affected_rows