Avatar billede jensclausen Juniormester
04. januar 2019 - 13:05 Der er 6 kommentarer og
1 løsning

Slette data i flere taleller på en gang

Hej alle.
Er der nogle i dette selskab  der har mulighed for at gi' mig svar på, hvordan man med samme SQL kommando kan slette poster i forskellige tabeller.
Jeg har prøver mange forskellige kommandoer, men bare ikke den rigtige kode. ØV! Den sletter kun i salgsbiler01 og ikke de andre. ØV- igen!
Mit script ser sådan ud:
<?php include "header.php";
    include "serverconnect.php";
    $id = $_GET['id'];
   
    $sql = "DELETE FROM salgsbiler01 WHERE id='$id'";
    if ($conn->query($sql) === TRUE)
    $sql_delete = "DELETE FROM salgsbiler02 where id = '$id'";
    if ($conn->query($sql) === TRUE)
    $sql_delete = "DELETE FROM salgsbiler03 where id = '$id'";
    if ($conn->query($sql) === TRUE)
    $sql_delete = "DELETE FROM salgsbiler04 where id = '$id'";
    if ($conn->query($sql) === TRUE)
    $sql_delete = "DELETE FROM salgsbiler05 where id = '$id'";
    if ($conn->query($sql) === TRUE)
    $sql_delete = "DELETE FROM salgsbiler06 where id = '$id'";
    if ($conn->query($sql) === TRUE) {
    echo "Record deleted successfully";
} else {
    echo "Error deleting record: " . $conn->error;
}
?>
<script language="javascript">
    window.location = "http://www.vedersoeauto.dk/administration/admin.php";
exit;
</script>
            <?PHP
?>
Avatar billede Slater Ekspert
04. januar 2019 - 13:14 #1
Du kan joine tabellerne og slette fra dem alle på én gang, eller du kan bare bruge flere tabeller i "delete from" listen, adskilt med komma.

Men må vi spørge hvorfor det er designet sådan til at begynde med? Umiddelbart bryder det totalt med idéen med en relationel database at have flere tabeller med samme indhold, her salgsbiler. Hvorfor er de ikke i én tabel?
Avatar billede arne_v Ekspert
04. januar 2019 - 15:13 #2
https://dev.mysql.com/doc/refman/8.0/en/delete.html ned til sektionen "Multi-Table Deletes" dokumenterer syntaxen.

Men den er MySQL specifik.

Den generelle måde må være at have flere separate DELETE bundtet i en enkelt transaktion.

Og så er jeg helt enig med slater omkring tabelstrukturen.

http://www.vajhoej.dk/arne/articles/dbintro2.html#colvstbl
Avatar billede jensclausen Juniormester
04. januar 2019 - 23:54 #3
Hej med jer.
Jeg har prøvet dette, men det virker ikke, og jeg er (desværre) ikke en haj
<?php include "header.php";
    include "serverconnect.php";
    $id = $_GET['id'];
 
    $sql = "DELETE FROM salgsbiler01, salgsbiler02, salgsbiler03, salgsbiler04, salgsbiler05, salgsbiler06 WHERE id='$id'";
    if ($conn->query($sql) === TRUE)
?>
Jeg havde en idé om, at jeg skulle bruge; joine men har ikke helt styr på det.
Har også kigget på de link der er sendt med, men det giver ingen (for mig) mening.
Hilsen Jens - der er på begynderniveau
Avatar billede arne_v Ekspert
05. januar 2019 - 03:25 #4
Du kunne starte med at udskrive MySQL fejl-meddelelsen.
Avatar billede arne_v Ekspert
05. januar 2019 - 03:28 #5
Men din syntax svarer jo ikke til den i MySQL manualen.

Proev:

$sql = "DELETE FROM salgsbiler01, salgsbiler02, salgsbiler03, salgsbiler04, salgsbiler05, salgsbiler06 USING salgsbiler01, salgsbiler02, salgsbiler03, salgsbiler04, salgsbiler05, salgsbiler06 WHERE id='$id'";
Avatar billede jensclausen Juniormester
05. januar 2019 - 22:14 #6
Hej arne_v
Tak for forslag, men det virker desværre ikke.
Avatar billede jensclausen Juniormester
06. januar 2019 - 22:15 #7
Hej igen. Dette er min læsning og den virker

<?php include "header.php";
    include "serverconnect.php";
    $id = $_GET['id'];
    $sql = "DELETE FROM salgsbiler01 WHERE id=$id";
    if ($conn->query($sql) === TRUE) {
    echo "Record deleted successfully";
    } else {
    echo "Error deleting record: " . $conn->error;
    }
    $sql = "DELETE FROM salgsbiler02 WHERE id=$id";
    if ($conn->query($sql) === TRUE) {
        echo "Record deleted successfully";
    } else {
        echo "Error deleting record: " . $conn->error;
    }
    $sql = "DELETE FROM salgsbiler03 WHERE id=$id";
    if ($conn->query($sql) === TRUE) {
        echo "Record deleted successfully";
    } else {
        echo "Error deleting record: " . $conn->error;
    }
    $sql = "DELETE FROM salgsbiler04 WHERE id=$id";
    if ($conn->query($sql) === TRUE) {
        echo "Record deleted successfully";
    } else {
        echo "Error deleting record: " . $conn->error;
    }
    $sql = "DELETE FROM salgsbiler05 WHERE id=$id";
    if ($conn->query($sql) === TRUE) {
        echo "Record deleted successfully";
    } else {
        echo "Error deleting record: " . $conn->error;
    }
    $sql = "DELETE FROM salgsbiler06 WHERE id=$id";
    if ($conn->query($sql) === TRUE) {
        echo "Record deleted successfully";
    } else {
        echo "Error deleting record: " . $conn->error;
    }
?>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester