我想从两个表中删除。我知道我可以使用联接,但我遇到了这个post,建议我可以用分号这样做:
$query = " DELETE from pupil_data WHERE pupil_id=$pupil_id;
DELETE from pupil_conditions WHERE pupil_id=$pupil_id";
$bob = $conn->query($query);
这不起作用。如果我自己做每个查询,那就好了。
为什么分号不起作用?
答案 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