- Home
- Categorie
- Coding e Sistemistica
- PHP
- Update di più campi
-
Update di più campi
Salve a tutti,
avrei un problemino con update in mysql...Ho un form la cui 'action' mi manda a un file.php che dovrebbe aggiornarmi 3 campi della mia tabella contemporaneamente.
Per fare questo ho provato più strade, ma nessuna di queste sembra funzionare come voglio...
Strada 1:
eseguire tante query quanti sono i campi da aggiornare:[php]
$sql_upd1 = "UPDATE contenuti SET ordine = '$ordine' WHERE ordine = '$upd'";
@mysql_query("$sql_upd1",$link) or die("Errore query database: " . mysql_error());
$sql_upd2 = "UPDATE contenuti SET link = '$newLink' WHERE ordine = '$upd'";
@mysql_query("$sql_upd2",$link) or die("Errore query database: " . mysql_error());
$sql_upd3 = "UPDATE contenuti SET descrizione = '$descrizione' WHERE ordine = '$upd'";
@mysql_query("$sql_upd3",$link) or die("Errore query database: " . mysql_error());
[/php]Il risultato di questo è un po' strano, nel senso che questo codice mi esegue solo la prima query, le altre 2 sembrano passare inosservate.
Se commento la prima query ($sql_upd1) le altre due funzionano entrambe contemporaneamente.Strada 2:
In questo caso ho provato a fare qualcosa di più complesso ma più snello, ma così non mi aggiorna proprio nulla, quindi ci dev'essere qualche errore.[php]
$field = array('ordine' => '$ordine','link' => '$newLink','descrizione' => '$descrizione');
foreach ($field as $k => $v) {
@mysql_query($sql_upd = "UPDATE contenuti SET $k = '$v' WHERE ordine = '$upd'",$link) or die("Errore query database: " . mysql_error());
}
[/php]Qualcuno mi sa dare qualche suggerimento, pls?
-
Ti stai complicando la vita inutilmente!
Aggiorna i 3 campi con un'unica query.
-
Ciao supadema,
ti consiglierei oltre ad utilizzare un'unica query come ti ha già detto tigrone, di non nascondere gli errori, proprio perchè non puoi sistemarli in tempi brevi.
-
@tigrone
In una sola query? Cioè una cosa così:
$sql_upd = "UPDATE contenuti SET ordine = '$ordine',link = '$newLink',descrizione = '$descrizione' WHERE ordine = '$upd'";
Era la prima cosa che avevo provato, ma non funzionava e poi facendo un po' di ricerche mi era sembrato di capire non si potesse fare...@Thedarkita
non ho capito, cosa vuol dire non nascondere gli errori?
-
Esatto.
Se metti davanti alle funzioni il simbolo '@', non fai visualizzare gli errori.
-
aah è vero, mi ero dimenticato di questo!
-
Ho risolto, adesso funziona:
[PHP]
$field = array('link' => $newLink, 'descrizione' => $descrizione,'ordine' => $ordine);
foreach ($field as $k => $v) {
mysql_query($sql_upd = "UPDATE contenuti SET $k = '$v' WHERE ordine = '$upd'",$link) or die("Errore query database: " . mysql_error());
}
[/PHP]L'errore stava nell'array, doveva essere $newLink e non '$newLink', $ordine e non '$ordine', ecc.
-
Stai facendo molte query, quando potevi fare la stessa cosa con una query ed ottenere un utilizzo di risorse inferiore.