[PHP] sql aggiungere dato in una tabella senza cancellare contenuto

trattorino

Utente Attivo
23 Lug 2016
174
2
18
39
ciao, come faccio ad aggiungere in una tabella un dato senza usare la funzione update in sql, ad esempio ho una tabella di nome "foto"
dentro la tabella foto devo inserire tramite un form dei dati mettiamo ad esempio che dentro la tabella c'è il dato: "immagine.jpeg" ora come faccio ad aggiungere un altro dato all'interno, cioè aggiornare la tabella senza cancellare il contenuto?
ho usato la funzione UPDATE ma cancella tutto all'interno... non voglio ricorrere a interrogare il database e con un while scaricarmi i dati della tabella per poi usare la funzone update, non c'è quancosa di più semplice?
grazie in anticipo
 

macus_adi

Utente Attivo
5 Dic 2017
1.313
88
48
IT/SW
Aggiungere 1 dato ad una tabella o aggiungere 1 campo alla tabella?

Per aggiungere 1 dato ad una tabella con già la predisposizione del campo, devi fare l'update.

Per aggiungere 1 dato ad una tabella senza il campo, devi fare Alter Table della tabella e poi torni al punto di sopra...


La sintassi di update prevede
UPDATE NOME_TABELLA
SET NOME_DEL_CAMPO = "VALORE DA ASSEGNARE"
WHERE NOME_CAMPO_CHIAVE = VALORE_CAMPO_CHIAVE

Se non imponi la condizione...., aggiorna tutto su tutto e non va bene....
 

mr.x

Utente Attivo
9 Apr 2016
252
25
28
Ciao Trattorino
ma vuoi sostiure il valore campo o vuoi metterlo in aggiunta?
Nel primo caso, se devi sostiutire "immagine.jpg" con "altro.jpg" ti ha già risposto MArcus_adi
nel caso in cui volessi aggiungere il dato, es. il campo foto dete contenere sia " immagine.jpg" sia "altro.jpg", puoi utilizzare CONCAT

Codice:
UPDATE tabella SET foto=CONCAT(foto,'dato da aggiungere') WHERE id=1;
 
  • Like
Reactions: trattorino

marino51

Utente Attivo
28 Feb 2013
2.931
166
63
Lombardia
@mr.x, scusami ma vorrei capire, perché conosco poco e sono interessato al problema,

con l'update che hai suggerito nel campo foto trovo una lunga stringa di caratteri (quelli che sono) che rappresentano la sequenza
"immagine.jpg" + "altro.jpg"

mi sembra che in questo modo le due immagini diventino "indistinguibili" fondendosi nella lunga stringa ….

con quale SELECT o altro metodo le "spacchetto" per usarle separatamente ?
se usassi il campo foto senza "spacchettare" cosa verrebbe visualizzato ?

grazie
 

mr.x

Utente Attivo
9 Apr 2016
252
25
28
Ciao @marino51
puoi inserire un carattere separatore (una virgola, un pipe, un trattino o quello che meno ti da noia secondo i dati trattati).

Codice:
$dato="img3.jpg";
$separatore=",";

sql=mysqli_query($link, "UPDATE TABELLA SET foto=concat(foto, '$separatore $dato') WHERE id=1 ");
nel tuo campo foto avresti qualcosa come
immagine.jpg,altro.jpg,img3.jpg

facilmente gestibile (es. con un explode).

Codice:
$select=mysqli_query($link, "SELECT * From TABELLA");
while($rows=mysqli_fetch_array($select))
{ echo $rows['foto'].'<br>';

$imgs = explode(",", $rows['foto']);
foreach($imgs as $img) {
    echo $img . "<br>";
}

}
P.s. si potrebbe gestire la separazione con l'estensione del file, con le dovute valutazioni.

oltre CONCAT può esser utilizzato CONCAT_WS che fa la stessa cosa mostrata nell'esempio, aggiungendo il separatore

Codice:
UPDATE Tabella SET foto=concat_ws('-', foto, '$dato') WHERE id=1 ");
// concat_ws( separatore, campo_del_DB, stringa_da_aggiungere)
 

marino51

Utente Attivo
28 Feb 2013
2.931
166
63
Lombardia
occorre usare quindi un separatore consistente che non si confonda con caratteri o stringhe presenti nei file
grazie per la risposta
 

trattorino

Utente Attivo
23 Lug 2016
174
2
18
39
Ciao Trattorino
ma vuoi sostiure il valore campo o vuoi metterlo in aggiunta?
Nel primo caso, se devi sostiutire "immagine.jpg" con "altro.jpg" ti ha già risposto MArcus_adi
nel caso in cui volessi aggiungere il dato, es. il campo foto dete contenere sia " immagine.jpg" sia "altro.jpg", puoi utilizzare CONCAT

Codice:
UPDATE tabella SET foto=CONCAT(foto,'dato da aggiungere') WHERE id=1;
grazie