让我们说我手中有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();
}
}
}
答案 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}}