我有两个查询,当选中复选框时,必须删除不同表上的行。问题是只执行其中一个查询并忽略另一个查询。
以下是代码:
if(isset($_POST["che".$i.""])){
$query4 = "DELETE FROM gastos WHERE id_dedicaciondos = $idded AND id_usuario=$idu;";
$query4 .= "DELETE FROM dedicacio WHERE id_dedicacion = $idded AND id_usuario=$idu;" ;
if(mysqli_multi_query($connexio,$query4)){
do{
if ($result = mysqli_store_result($connexio)) {
mysqli_free_result($result);
}
}while(mysqli_next_result($connexio) && mysqli_more_results($connexio));
}
}
仅删除第二个查询中的行...如果我更改查询的顺序,结果完全相同,则只从查询中删除“delete from dedicatedacio”。
我该怎么办?
提前致谢
更新
我尝试了下一个:
if(isset($_POST["che".$i.""])){
$query4 = "DELETE FROM gastos WHERE id_dedicaciondos = ".$idded.";";
$query5 = "DELETE FROM dedicacio WHERE id_dedicacion = ".$idded.";";
if(mysqli_query($connexio,$query4)){
echo "YES!";
}
if(mysqli_query($connexio,$query5)){
echo "YES2!";
}
}
显示“是的!”和“YES2!”但查询不会删除“gastos”表上的任何内容:(
更新
我自己解决了在引用id_dedicacions的id_dedicaciondos中添加“ON DELETE CASCADE”。
答案 0 :(得分:0)
尝试使用此代码:
if ($mysqli->multi_query($query4)) {
do {
if ($result = $mysqli->store_result()) {
$result->free();
}
/* print divider */
if ($mysqli->more_results()) {
printf("-----------------\n");
}
} while ($mysqli->next_result());
}
答案 1 :(得分:0)
刚试过这个并且工作正常:
<?php
$mysqli = new mysqli("localhost", "user", "pass", "testdb");
$query4 = "DELETE FROM test_table1 WHERE num = 0;";
$query4 .= "DELETE FROM test_table2 WHERE num = 0;";
$mysqli->multi_query($query4);
while ($mysqli->next_result()) {;} // flush queries
$mysqli->close();
?>