2015-12-18 138 views
1

我正在寫一個函數來刪除我的數據庫中的用戶之一,使用下面的代碼,mysqli_affected_rows如何總是返回0?mysqli_affected_rows總是返回0

$query = "DELETE FROM taxaapp_users WHERE id = $clientId AND grp = $grp"; 
    $response['errorMsg1'] = $query; 
    if (sqlQuery($query)){ 
     $response['success'] = "testing " . mysqli_affected_rows($con); 

    } else { 
     $result = sqlQuery("SELECT id FROM "); 
     $response['errorMsg'] = "Der er sket en fejl"; 
    } 

function sqlQuery($query) { 
    global $con; 
    $result = mysqli_query($con,$query); 
    return mysqli_query($con, $query); 
} 

當其運行,如果我改變$的clientId到一個不存在的查詢仍返回true(可能是正確的)正確的用戶被刪除,mysqli_affected_rows返回0依然。

+0

你爲什麼執行查詢兩次? –

+0

立即執行您的查詢。 – devpro

+0

**返回$結果** –

回答

7

爲什麼要執行查詢兩次?

$result = mysqli_query($con,$query); 
return mysqli_query($con, $query); 

第二次就不會刪除任何東西,因爲它已經被第一次執行刪除,所以受影響的行會是0

+0

啊,啞巴我大聲笑。根本沒有注意到這一點。謝謝 – Mathias

+0

阿汗,這叫犀利眼... – devpro

0

不要執行兩次。

$query = "DELETE FROM taxaapp_users WHERE id = '$clientId' AND grp = '$grp'"; 
    $response['errorMsg1'] = $query; 
    if (sqlQuery($query)){ 
     $response['success'] = "testing " . mysqli_affected_rows($con); 

    } else { 
     $result = sqlQuery("SELECT id FROM "); 
     $response['errorMsg'] = "Der er sket en fejl"; 
    } 

function sqlQuery($query) { 
    global $con; 
    return mysqli_query($con, $query); 
} 
+0

嘿,你有多確定'id'和'grp'不是'Int'數據類型? –

+0

在這裏,沒有人能確定。最好讓OP給出DB結構。我們不是寫完整的代碼。我們提出建議。我們怎麼能知道他有什麼結構?@ BlessedNerd –

0

你只需要在執行一次查詢。因爲0是您在函數中使用return的第二個查詢的結果集。

+1

啊,謝謝沒有注意到。 – Mathias