如何删除更多行


How to remove more rows?

我创建了一个扩展 pdo 功能的类,在这个类中,我创建了一个delete函数,如下所示:

public function delete($table, $where, $limit = 1)
{
    return $this->exec("DELETE FROM $table WHERE $where LIMIT $limit");
}

要使用它,只需:

public function deleteData()
{
    $id = 13;
    $name = "Test";
    $where = "`id` = '{$id}' AND name = '{$name}'";
    $this->db->delete('wine', $where);
}

但是如果我想传递更多要删除的行,我应该这样做吗?

像这样:

public function delete($table, array $binds)
{
    $whereStatements = [];
    foreach ($binds as $field => &$value) {
        $whereStatements[] = " $field " . (is_array($value) ? "IN (:$field)" : "= :$field");
        $value = is_array($value) ? implode(',', $value) : $value;
    }
    $where = 'WHERE ' . implode(' AND ', $whereStatements);
    $stmt = $this->prepare("DELETE FROM $table $where");
    $stmt->execute($binds);
    // return how many records were deleted
    return $stmt->rowCount();
}

用法:

$rowsCount = $this->db->delete('MY_TABLE', array(
    'id' => array(1, 3, 5, 2, 6, 7),
    'name' => 'myName'
));
echo "I just deleted $rowsCount entries";

请注意,此代码未经测试。

按如下方式编写代码:-

public function delete($table, $ids) // No need to set limit
{
    return $this->exec("DELETE FROM $table WHERE id IN($ids)");
}
public function deleteData()
{
    $id1 = 13;  
    $id2 = 14;   
    // Id(PK) is enough for "delete" query
    $this->db->delete('wine', "$id1,$id2");
}
OR
public function deleteData()
{
  $idsArr = ['13','14'];   
  $ids = implode(',',$idsArr);
  // Id(PK) is enough for "delete" query
  $this->db->delete('wine', "$ids");
}

希望它能帮助你:)