Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    56

    gestire insert contemporaneamente su due tabelle

    salve, devo effettuare due insert contemporaneamente su due tabelle del database, tramite PHP. Come posso fare?
    in pratica ho una tabella prodotti(ID, nome, descrizione, quantita, percorso_foto) associata alla tabella prezzi(codp, valore, descrizione, ID). Ho fatto questo JOIN tra le due tabelle perche' un prodotto puo' avere due prezzi (uno per i privati e uno per i rivenditori). Quindi per ogni riga della tabella prodotti avro' due righe corrispondenti a quel valore nella tabella prezzi.

    Come devo fare per far si che quando faccio la insert sulla tabella prodotti, contemporaneamente la posso fare pure sulla tabella prezzi per lo stesso valore di chiave?

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Query diverse per ogni insert all'interno di una transazione, così se tutto va bene fai il commit e sei a posto, se qualcosa va male fai il rollback ed è come se non fosse successo niente.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    56
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Query diverse per ogni insert all'interno di una transazione, così se tutto va bene fai il commit e sei a posto, se qualcosa va male fai il rollback ed è come se non fosse successo niente.
    mi fai un esempio su come devo effettuare una transazione?

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Leggi il manuale.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    56
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Leggi il manuale.
    grazie, alla fine ho risolto facendo cosi:
    codice:
    $servername = "localhost";$username = "root";
    $password = "";
    $dbname = "ceramica";
    
    
    // Create connection
    $conn = mysqli_connect($servername, $username, $password, $dbname);
    // Check connection
    if (!$conn) {
        die("Connection failed: " . mysqli_connect_error());
    }
    
    
    $sql= "INSERT INTO prodotti (nome, descrizione, extra, percorso_foto, quantita, cods)
           VALUES ('piatto', 'descrizione di prova', 'vetrina', 'img.jpg', 2, 1);";
    mysqli_query($conn, $sql);
    $codp= mysqli_insert_id($conn);
    
    
    $sql= "INSERT INTO prezzi (`valore`, `descrizione`, `prodotto_ID`) VALUES ('22.50', 'privato', '$codp'),('16.20', 'rivenditore', '$codp');";
    echo $sql;
    mysqli_query($conn, $sql);
    
    
    mysqli_close($conn);
    ovviamente i valori li ricevo da un form

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Questa non è una transazione.
    Se la prima query viene eseguita correttamente e la seconda fallisce ti trovi dati inconsistenti perché nella tabella "Prodotti" il prodotto viene inserito, ma il suo prezzo nella tabella "Prezzi" non ci sarà.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    56
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Questa non è una transazione.
    Se la prima query viene eseguita correttamente e la seconda fallisce ti trovi dati inconsistenti perché nella tabella "Prodotti" il prodotto viene inserito, ma il suo prezzo nella tabella "Prezzi" non ci sarà.
    si lo so però le transazioni le conosco solo teoricamente, se devo mettermi a vedere come si creano rischio di non portare al termine il progetto, se mi rimane tempo vedo di adottare la tua soluzione (che senza dubbio è la migliore)

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Non è che la mia sia migliore, è quella corretta, la tua è sbagliata.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.