我试图通过在参数中传递一个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条记录。
由于
答案 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);
}