Problema su update di 3 tabelle

Max61

Utente Attivo
2 Mar 2014
694
3
18
Salve, come da titolo non riesco ad aggiornare 3 tabelle contemporaneamente, allego query
PHP:
UPDATE
tblanagrafica
INNER JOIN
tblsinistri,tblverbali
ON
tblanagrafica.idanagrafica = tblsinistri.tblanagrafica_id
tblanagrafica.idanagrafica = tblverbali.tblanagrafica_id
tblanagrafica.idanagrafica = tblverbali.tblanagrafica_id

SET

tblanagrafica.Nominativo = '$Nominativo',
tblsinistri.Nominativo = '$Nominativo',
tblanagrafica.Residenza = '$Residenza',
tblsinistri.Residenza = '$Residenza',
tblanagrafica.CodiceFiscale = '$CodiceFiscale',
tblsinistri.CodiceFiscale = '$CodiceFiscale',
tblanagrafica.Indirizzo = '$Indirizzo',
tblsinistri.Indirizzo = '$Indirizzo',
tblanagrafica.TelefonoFisso = '$TelefonoFisso',
tblsinistri.TelefonoFisso = '$TelefonoFisso',
tblanagrafica.Cellulare = '$Cellulare',
tblsinistri.Cellulare = '$Cellulare',
tblanagrafica.Mail = '$Mail',
tblsinistri.Mail = '$Mail',


tblanagrafica.Nominativo = '$Nominativo',
tblverbali.Nominativo = '$Nominativo',
tblanagrafica.Residenza = '$Residenza',
tblverbali.Residenza = '$Residenza',
tblanagrafica.CodiceFiscale = '$CodiceFiscale',
tblverbali.CodiceFiscale = '$CodiceFiscale',
tblanagrafica.Indirizzo = '$Indirizzo',
tblverbali.Indirizzo = '$Indirizzo',
tblanagrafica.TelefonoFisso = '$TelefonoFisso',
tblverbali.TelefonoFisso = '$TelefonoFisso',
tblanagrafica.Cellulare = '$Cellulare',
tblverbali.Cellulare = '$Cellulare',
tblanagrafica.Mail = '$Mail',
tblverbali.Mail = '$Mail'
WHERE
tblanagrafica.idanagrafica = '$idanagrafica';
Qualcuno mi sa dire dove sbaglio?
Grazie
Max61
 

macus_adi

Utente Attivo
5 Dic 2017
1.313
88
48
IT/SW
Salve, come da titolo non riesco ad aggiornare 3 tabelle contemporaneamente, allego query
Codice:
UPDATE
tblanagrafica
INNER JOIN
tblsinistri,tblverbali
ON
tblanagrafica.idanagrafica = tblsinistri.tblanagrafica_id
tblanagrafica.idanagrafica = tblverbali.tblanagrafica_id

Non utilizzando le transaction è un pò rischioso fare l'update su 3 tabelle con una join!

Magari potresti provate una cosa del genere, immaginando che Nominativo,Residenza,CodiceFiscale ... vengano inseriti in un array o semplicemente siano dati $_POST....
La logica:
tables ha come chiavi le tabelle mentre il valore è a sua volta un array con "key" e valore da recuperare sempre dall'array di cui sopra...
Il risultato più o meno dovrebbe essere questo...
PHP:
$tables=
   [
      'idanagrafica'=>['key'=>'idanagrafica','value'=>'idanagrafica'],
      'tblsinistri'=>['key'=>'tblanagrafica_id','value'=>'idanagrafica'],
      'tblverbali'=>['key'=>'tblanagrafica_id','value'=>'idanagrafica']
   ];
$map=['Nominativo','Residenza','CodiceFiscale','Indirizzo','TelefonoFisso','Cellulare','Mail'];
foreach ($tables as $table=>$field){
   $q='UPDATE '.$table.' SET ';
   foreach ($map as $items){
      $q.=$items.'="'.$data[$map].'" ';
      (next($map))?$q.=', ':null;
   }
   $q=' WHERE '.$field['key'].' = "'.$data[$field['value']].'"';
   $conn->query($q);
}
Sarebbe il caso di aggiungere l'observer object per aggiornare i dati...