Search code examples
phpmysqlmysqlimysqli-multi-query

Deleting tables with mysqli_multi_query()


I'm trying to delete my principle table 'eleve', with deleting others table which has their primary key in this one. I tried like in the attached code, but I got an error:

(Erreur de syntaxe pr�s de 'from bource where ID_BOURCE = 1delete from class where ID_CLASS = 1delete from p' � la ligne 1)

Any ideas?

if (isset($_POST['butAj4'])) {
  $queryDel = "delete from inscription where NUM_INSCRIPTION = $NUM_INSCRIPTION";
  $queryDel. = "delete from bource where ID_BOURCE = $ID_BOURCE";
  $queryDel. = "delete from class where ID_CLASS = $ID_CLASS";
  $queryDel. = "delete from project where ID_PROJECT = $ID_PROJECT";
  $queryDel. = "delete from annee_scolaire where ID_ANNEE = $ID_ANNEE";
  $queryDel. = "delete from eleve where CIN_ELEVE = '$InputCIN'";

  if (mysqli_multi_query($con, $queryDel)) {
    $msg3 = "<div class='alert alert-success'>Bien suppression</div>";
  } else {
    $msg3 = "<div class='alert alert-danger'>error dans la suppression</div>".mysqli_error($con);

  }
}

Solution

  • Not sure why you want to do it like this there are better ways but to answer your question do it like this:

    $queryDel = "
    delete from inscription where NUM_INSCRIPTION= $NUM_INSCRIPTION ;
    delete from bource where ID_BOURCE = $ID_BOURCE ;
    delete from class where ID_CLASS = $ID_CLASS ;
    delete from project where ID_PROJECT = $ID_PROJECT ;
    delete from annee_scolaire where ID_ANNEE = $ID_ANNEE ;
    delete from eleve where CIN_ELEVE = '$InputCIN'; ";
    
    $result=mysqli_multi_query($con,$queryDel);
    

    and also remember to clear the results else you wont be able to perform another query but i don't think delete will return a result.

    while(mysqli_next_result($con)){;} //clear any remaining query results.
    

    also remember that if one query fails all the rest will not run. so to debug try running each query separately first and make sure it all works since its a delete statement back up your database before running the query and restore as when needed.