从一个查询mysqli中的两个表中删除

时间:2015-10-07 08:50:05

标签: php mysqli

我想从两个表中删除。我知道我可以使用联接,但我遇到了这个post,建议我可以用分号这样做:

$query = "  DELETE from pupil_data WHERE pupil_id=$pupil_id;
            DELETE from pupil_conditions WHERE pupil_id=$pupil_id";
$bob = $conn->query($query);

这不起作用。如果我自己做每个查询,那就好了。

为什么分号不起作用?

3 个答案:

答案 0 :(得分:0)

试试这个

$query = "  DELETE from pupil_data WHERE pupil_id=$pupil_id;
            DELETE from pupil_conditions WHERE pupil_id=$pupil_id";
$bob = $conn->multi_query($query);

答案 1 :(得分:0)

首先,您的查询不会从一个查询中的两个表中删除。有两个单独的SQL查询。

其次,您不需要在一个函数调用中运行2个查询。在两个单独的函数调用中运行两个单独的查询这是合乎逻辑的,为您省去了很多麻烦。

第三,永远不要使用mysqli_multi_query()这样的心血来潮。这个功能的目的是不同的。每个要求你使用它的人,从未在现实中使用它,也不知道如何正确使用它,帮助你在脚下射击自己。

第四,你应该使用预准备语句,而不是直接在查询中敲打变量。

$stmt = $conn->prepare("DELETE from pupil_data WHERE pupil_id=?");
$stmt->bind_param("s",$pupil_id);
$stmt->execute();

$stmt = $conn->prepare("DELETE from pupil_conditions WHERE pupil_id=?");
$stmt->bind_param("s",$pupil_id);
$stmt->execute();

是您必须运行的代码。

答案 2 :(得分:-1)

  

DELETE table_1,table_2,... FROM table-refs [WHERE condition]
  DELETE FROM table_1,table_2,... USING table-refs [WHERE conditions]

以下是reference