Php 准备好的语句一次执行多个查询

Php 准备好的语句一次执行多个查询,php,mysql,mysqli,Php,Mysql,Mysqli,我已经试了好几个小时了,但还是不走运。我只是使用复选框从两个表中删除行。假设我检查了两个结果并点击delete,那么这两行应该从两个表中删除 在下面的代码中,第一个查询删除两行,而第二个查询只删除一行。如果我只是单独运行每个查询,那么它们都会删除两行吗?我尝试过很多次,但都没能达到我想要的 有人能告诉我为什么每个查询都不能删除两行吗?还是有更好的方法?某种替代方案 $stmt1 = $mydb->prepare("DELETE from laptop where username =

我已经试了好几个小时了,但还是不走运。我只是使用复选框从两个表中删除行。假设我检查了两个结果并点击delete,那么这两行应该从两个表中删除

在下面的代码中,第一个查询删除两行,而第二个查询只删除一行。如果我只是单独运行每个查询,那么它们都会删除两行吗?我尝试过很多次,但都没能达到我想要的

有人能告诉我为什么每个查询都不能删除两行吗?还是有更好的方法?某种替代方案

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

为什么不合并成一个查询

$stmt1  = $mydb->prepare("DELETE from laptop, search where username = ? and id = ?");

在上面的示例中,第一个查询在$_POST['id']上循环,但它始终使用与id=

如果该查询正在删除多行,则该表中有具有重复用户名/id的行。您应该删除该循环,因为您正在做额外的工作,多次运行同一个delete查询

您提到第一个查询正在运行,而第二个查询没有运行


如果是这种情况,您能否在循环中回显$id的值,并验证它是否循环了两次,以及这些值是否符合您的预期?

对于第一个查询,id应等于$pdata的值,对于第二个查询,id应等于$id的值。使用$\u POST[]在SQL查询中直接使用SQL肯定会导致SQL注入@haywire这在这里根本不是一个例子,我遇到了一个更大的问题。你有没有想过这个问题?