0

当检查复选框时,我有两个查询必须在不同表上删除行。问题是只执行其中一个查询而忽略另一个。

这是代码:

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 dedicacio”中删除。

我能做些什么?

提前致谢

更新

我试过下一个:

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”。

4

2 回答 2

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

?>
于 2013-06-07T09:18:22.380 回答
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());
}
于 2013-06-07T08:37:56.473 回答