无法在函数中正确检索mysqli_affected_rows

时间:2014-01-01 03:21:24

标签: php mysqli

我试图通过在参数中传递一个id数组来删除具有单个函数的多个记录。我的功能正常,但我无法在成功时检索正确数量的受影响的行。虽然我有一个失败的想法,但由于缺乏编码的抓地力,我无法正确的方式。以下是我的功能

 /**
     * Delete a specific customer or customers
     * @param int or array of ids $id
     * return affected rows on success
     */
    public function Delete_Customers($ids){
        foreach ($ids as $id){
        $result = Database::Run("DELETE FROM customer WHERE id=$id");
        }
        return mysqli_affected_rows(Database::$connection);
    }

所以即使我删除了多条记录,内置的mysqli函数也会删除我的1条记录。

由于

1 个答案:

答案 0 :(得分:3)

由于您编写代码的方式,使用循环一次删除一行,让PHP知道受影响行数的指针每次都会重置为1。我建议将代码更改为不使用循环,而只是使用SQL来为您处理所有内容

public function Delete_Customers($ids){
    $idSetStr = implode(',',$ids);
    $result = Database::Run("DELETE FROM customer WHERE id IN ($idSetStr)");
    return mysqli_affected_rows(Database::$connection);
}