[PHP & mysql]Insert multiple...

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
incredible
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 710
Iscrizione: lunedì 26 febbraio 2007, 8:08

[PHP & mysql]Insert multiple...

Messaggio da incredible »

devo fare delle insert che coinvolgono 5 tabelle differenti.


tabella A caratteristica A (id_c ..........altri campi..)
tabella B collega C e A (id_c id_a)

tabella C oggetto principale (id_c ..........altri campi..)

tabella E collega C e D (id_c id_d)
tabella D caratteristica D (id_d ..........altri campi.. )

è possibile gestire il tutto in maniera furba senza fare insert select insert ect...

in pratica una volta inserito in tabella C devo sapere id_C che è un contatore e da questo andare inserire nelle altre tabelle.
Come posso fare per queste insert multiple?
Spero di essermi spiegato grazie.
prampa
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 652
Iscrizione: lunedì 26 febbraio 2007, 14:04

Re: [PHP & mysql]Insert multiple...

Messaggio da prampa »

ti riporto quello che ho trovato sul sito php

Codice: Seleziona tutto

mysql_insert_id

(PHP 3, PHP 4, PHP 5)
mysql_insert_id --  Ottiene l'identificativo generato dalla precedente operazione INSERT
Descrizione
int mysql_insert_id ( [resource identificativo_connessione] )

mysql_insert_id() restituisce l'identificativo generato per una colonna AUTO_INCREMENT dal precedente query INSERT usando lo specifico identificativo_connessione. Se identificativo_connessione non è specificato, viene considerata l'ultima connessione aperta.

mysql_insert_id() restituisce 0 se la precedente query non ha generato un valore AUTO_INCREMENT. Se è necessario salvare il valore per usarlo in seguito, assicurarsi di richiamare mysql_insert_id() immediatamente dopo la query che ha generato il valore.

    Nota: Il valore della funzione SQL LAST_INSERT_ID() di MySQL contiene sempre il più recente valore AUTO_INCREMENT generato e non è azzerato dalle query. 

Avvertimento

mysql_insert_id() converte il tipo restituito dalla funzione nativa dell'API C di MySQL mysql_insert_id() al tipo long (chiamata int nel PHP). Se la colonna AUTO_INCREMENT è del tipo BIGINT, il valore restituito da mysql_insert_id() sarà inesatto. In questo caso si usi la funzione SQL di MySQL LAST_INSERT_ID() in una query SQL.

Esempio 1. Esempio di mysql_insert_id
<?php
    mysql_connect("localhost", "utente_mysql", "password_mysql") or
        die("Connessione non riuscita: " . mysql_error());
    mysql_select_db("mio_db");

    mysql_query("INSERT INTO mia_tabella (prodotto) VALUES ('kossu')");
    printf ("L'ultimo recod inserito ha l'identificativo %d\n", mysql_insert_id());
?> 
In questo modo devi fare tutte le insert ma ti risparmi la successiva select che dicevi tu. Poi l'importante secondo me è usare una sola connessione per fare tutte le insert in modo da bloccare tutto se qualcosa non va. E pensa anche alla possibilità di creare per queste operazioni una funzione memorizzata dentro mysql per gestire il tutto lato server (hai molti campi da passare per le insert?). Spero pero' di aver capito bene quello che ti serviva...
ciao
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti