0

チェックボックスがオンになっているときに、異なるテーブルの行を削除する必要がある 2 つのクエリがあります。問題は、クエリの 1 つだけを実行し、他のクエリを無視することです。

コードは次のとおりです。

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

2番目のクエリからのみ行を削除します...クエリの順序を変更すると、結果はまったく同じになり、「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!";
       }
    }

「YES!」と表示されます。そして「YES2!」しかし、クエリは「gastos」テーブルの何も削除しません:(

アップデート

id_dedicacions を参照する id_dedicaciondos に「ON DELETE CASCADE」を追加して、自分で解決しました。

4

2 に答える 2

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 に答える