我已经尝试了好几个小时但仍然没有运气。我只是使用复选框从两个表中删除行。假设我已经检查了两个结果并点击了删除,那么应该从两个表中删除这两行。
在下面的代码中,第一个查询删除了两行,但第二个查询只删除了一行。如果我只是单独运行每个查询,那么他们都删除两行?我尝试了很多次但是我无法实现我想要的目标。
有人可以告诉我为什么每个查询都无法删除两行吗?或者有更好的方法吗?某种替代方案?
$stmt1 = $mydb->prepare("DELETE from laptop where username = ? and id = ?");
echo $mydb->error;
foreach ($_POST['id'] as $id)
{
$stmt1->bind_param('ss', $username->username, $pdata);
$stmt1->execute();
}
$stmt2 = $mydb->prepare("DELETE from search where username = ? and id = ?");
echo $mydb->error;
foreach ($_POST['id'] as $id)
{
$stmt2->bind_param('ss', $username->username, $id);
$stmt2->execute();
}
答案 0 :(得分:0)
为什么不组合成一个查询?
$stmt1 = $mydb->prepare("DELETE from laptop, search where username = ? and id = ?");
答案 1 :(得分:0)
在上面的示例中,第一个查询循环遍历$ _POST ['id'],但它总是使用相同的值$ pdata作为id =?的参数。
如果该查询正在删除多行,那么您在该表中的用户名/ ID重复。您应该删除循环,因为您正在执行多次运行相同删除查询的额外工作。
你提到第一个查询正在运行而第二个查询不是。
如果是这种情况,您是否可以在循环中回显$ id的值并验证它是否循环两次且值是您期望的值?