PHP-MYSQL无法在mysqli\u multi\u查询中删除

PHP-MYSQL无法在mysqli\u multi\u查询中删除,php,mysqli,Php,Mysqli,我有两个查询,当选中复选框时,它们必须删除不同表上的行。问题是只执行一个查询,而忽略另一个查询 代码如下: 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

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

代码如下:

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!";
       }
    }
它显示“YES!”和“YES2!”,但查询不会删除“gastos”表中的任何内容:(

更新

我自己解决了这个问题,在引用id_dedicacion的id_dedicacion中添加了一个“ON DELETE CASCADE”。

尝试使用以下代码:

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

刚刚测试过,效果很好:

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

?>


尝试查看列名称是否有输入错误。此外,您还可以回显查询并查看其中的内容,然后尝试手动运行它,例如在phpmyadmin中,然后查看发生了什么。当我手动运行查询时,它会起作用……我在mysql控制台和phpmyadmin上尝试过。如果回显查询,它会返回我期望的结果,一切都是正确的:从gastos中删除,其中id_dedicaciondos=1和id_usuario=1;从dedicacio中删除,其中id_dedicacion=1和id_usuario=1;我得到“未定义变量:mysqli in…”$mysqli=newmysqli(“localhost”、“user”、“pass”、“testdb”);我得到:“严格标准:mysqli::next\u result():没有下一个结果集。请调用mysqli\u more\u results()/mysqli::more_results()检查是否在第67行的H:\wamp\www\dedicacio\actuhores2.php中调用此函数/方法,并且仅从“dedicacio”中删除表…做一点更改。从第二个查询中删除分号。这只是一个点击并试用的方法。因为如果我们放置分号,它将执行下一个查询。这是不可能的…我尝试了“删除dedicacio,dedicacio中的gastos左加入dedicacio上的gastos.id_dedicacion=gastos.id_dedicaciondos,其中dedicacio.id_dedicacion=22;”在MySQL控制台上,它可以工作,但在php上没有…这很烦人:(奇怪…只适用于其中一个查询…如果(isset($POST[“che.”$i.“”)]{$query4=“从gastos删除,其中id_dedicaciondos=$idd和id_usuario=$idu;;$query4.=”从dedicacio删除,其中id_dedicacion=$idd和id_usuario=$idu;”$mysqli=newmysqli(“localhost”、“user”、“password”、“database”);$mysqli->multi_query($query4);while($mysqli->next_result()){;}$mysqli->close();}尝试在while语句中回显mysqli错误以查看发生了什么。