如何批量删除问题

时间:2015-01-11 05:47:03

标签: php mysql

让我们说我手中有30个问题。 我想一次删除这30个问题。 但是有一些编码错误,如果你能帮助我,我们非常感激

public function Clear()
    {
        $stmt = $this->db->prepare("SELECT id FROM ask_data WHERE standart=0");
        $stmt->execute();

        if ($stmt->rowCount() > 0)
        {
            $ask_cnt = $stmt->rowCount();

            $ask_data = array();

            while ($row = $stmt->fetch())
            {
                $data = array("ask_id" => $row['id']);
                $stmt2 = $this->db->prepare("DELETE FROM  id FROM questions WHERE ask_id=(:ask_id)");
                $stmt->bindParam(':ask_id', $ask_data[$i], PDO::PARAM_INT);
                $stmt2->execute();  
            }
            $i = 0;
            $count = count($ask_id);

            for ($i=0;$i<$count;$i++)
            {
                $data = array("ask_id" => $row['id']);
                $stmt2 = $this->db->prepare("DELETE FROM  id FROM questions WHERE ask_id=(:ask_id)");
                $stmt->bindParam(':ask_id', $ask_data[$i], PDO::PARAM_INT);
                $stmt2->execute();
            }
        }
    }

3 个答案:

答案 0 :(得分:0)

delete语句错误 - 您有两个from子句。您应该删除FROM id

DELETE FROM questions WHERE ask_id=(:ask_id)

话虽如此,您可以使用IN运算符而不是单独的查询来大大简化您的程序:

DELETE FROM questions
WHERE ask_id IN (SELECT id 
                 FROM   ask_data
                 WHERE  standart = 0)

答案 1 :(得分:0)

hy,你的删除查询不正确。你可以像

一样使用它

&#34;删除问题WHERE ask_id =&#34;。$ row [&#39; id&#39;]。&#34;;

答案 2 :(得分:0)

我不明白为什么你需要在你的代码中使用一个循环来运行三十个单独的DELETE语句。

如果目标是从questions表中删除行,其ask_id列值与id ask_data列中的standart列相匹配, DELETE q.* FROM ask_data d JOIN questions q ON q.ask_id = d.id WHERE d.standart=0 列值为零......

这可以在一个 SQL语句中完成。一个数据库往返。无需单独的SELECT语句,获取行并运行循环以执行更多SQL语句。

{{1}}