2015-12-18 229 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