1

我已经尝试了几个小时,但仍然没有运气。我只是使用复选框从两个表中删除行。假设我检查了两个结果并点击了删除,那么应该从两个表中删除这两行。

在下面的代码中,第一个查询删除了两行,但第二个查询只删除了一行。如果我只是单独运行每个查询,那么它们都会删除两行?我已经尝试了很多次,但我无法实现我想要的。

有人可以告诉我为什么每个查询都无法删除两行吗?还是有更好的方法来做到这一点?某种替代方案?

  $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();
}
4

2 回答 2

0

在上面的示例中,第一个查询循环遍历 $_POST['id'],但它始终使用与 id=? 的参数相同的值 $pdata。

如果该查询正在删除多行,那么您在该表中有重复用户名/ID 的行。您应该删除循环,因为您正在执行多次运行相同删除查询的额外工作。

您提到第一个查询有效,而第二个查询无效。

如果是这种情况,您能否在循环中回显 $id 的值并验证它是否循环了两次并且这些值是您所期望的?

于 2013-11-12T04:16:58.230 回答
0

为什么不合并到一个查询中?

$stmt1  = $mydb->prepare("DELETE from laptop, search where username = ? and id = ?");
于 2013-11-12T03:59:33.310 回答