我有一个while语句和一个PDO语句,如果有人单击删除按钮,则可以删除一行。
$companies = $db->query("SELECT * FROM companies LIMIT 50");
while($result = $companies->fetch()) {
$delete = $db->prepare("DELETE from companies WHERE id=?");
$response = $delete->execute(array($result['id']));
}
}
例如:
公司1 删除
公司2 删除
如果有人单击该删除按钮,我想删除它所附属的公司。现在,当我执行此代码并仅对一个公司单击“删除”时,它将删除表中的每个公司。
答案 0 :(得分:0)
您的代码位于循环的中间,并在找到的每个记录上调用using Owin; //Assembly System.Web.Http.Owin
。毫不奇怪,它会删除所有公司。
通常,您要做的就是删除一个并且只有一个:
DELETE
其中$delete = $db->prepare("DELETE from companies WHERE id=?");
$response = $delete->execute(array($_POST['id']));
代表发布的$_POST['id']
参数。使用POST的原因是因为某些浏览器会尝试并提供帮助并预取所有GET链接。这意味着他们将有帮助地删除所有内容。
由于浏览器不会自动触发POST,因此约定使用POST。
像jQuery这样的工具使发布带有id
之类的链接变得容易。例如:
$.post
然后您可以在此处使用如下所示的内容自动绑定到所有这些“发布”按钮:
<a href="/delete" data-id="3" data-method="post" class="btn btn-primary">Delete</a>
在使用非干扰性JavaScript原理的情况下,可以相当无缝地添加它。
答案 1 :(得分:0)
不需要while循环只需传递单个公司ID并通过ajax或链接或表单发布方法删除