Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    42

    MySQL UPDATE appende invece di aggiornare il record

    Ciao a tutti.
    Tramite una query SQL vorrei aggiornare una tabella di dati, sostituendo i dati di un utente con dei nuovi dati. Utilizzo questo comando:
    Codice PHP:
    mysql_query("UPDATE $table SET x=$x,y=$y WHERE user=$user;"); 
    Quindi, cerco di reimpostare i campi 'x' e 'y' dove il campo 'user' è uguale a $user.

    Questa cosa non funziona: la UPDATE, invece di aggiornare il campo già esistente (come mi aspetterei) attacca in coda alla tabella una nuova riga, creando un nuovo record e quindi duplicando l'utente. Ma ha senso questa cosa? Se avessi voluto appendere i dati avrei usato un'altra query, non certo la UPDATE.

    P.S.: 'user' non è chiave primaria.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    37
    Prova innanzi tutto a impostare il campo user come chiave unica e se non l'hai fatto inserisci gli apici ai valori che vuoi inserire e quelli adatti per le colonne del database in questo modo:
    Codice PHP:
    mysql_query"UPDATE `$table` SET `x`='$x',`y`='$y' WHERE `user`='$user' " ); 
    Naturalmente se i valori contenuti nelle variabili $x, $y e $user sono valori numerici non inserire gli apici

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    42
    Originariamente inviato da simcar
    Prova innanzi tutto a impostare il campo user come chiave unica e se non l'hai fatto inserisci gli apici ai valori che vuoi inserire e quelli adatti per le colonne del database in questo modo:
    Codice PHP:
    mysql_query"UPDATE `$table` SET `x`='$x',`y`='$y' WHERE `user`='$user' " ); 
    Naturalmente se i valori contenuti nelle variabili $x, $y e $user sono valori numerici non inserire gli apici
    Grazie per la risposta simcar. In realtà è una cosa che ho già fatto: i campi sono caratteri e hanno gli apici (qui ho riportato il comando nudo e crudo e li ho tagliati via). Il problema non è che il comando genera errore... il comand funziona! Ma fa una cosa che non dovrebbe fare, ovvero "appendere" invece di "aggiornare".

    Non ho però provato a impostare user come chiave primaria, proverò e vediamo...

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Non è possibile che la update aggiunga un nuovo record.

    Non è che nel tuo script hai anche una insert è che venga eseguita questa invece che la update?

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    42
    Originariamente inviato da boots
    Non è possibile che la update aggiunga un nuovo record.

    Non è che nel tuo script hai anche una insert è che venga eseguita questa invece che la update?
    No, non c'è una insert, però all'inizio delo script c'è un controllo che verifica l'esistenza della tabella: se la tabellla non esiste, viene creata. Effettivamente è plausibile che ci sia un problema nel controllo if() che poi mi incasina la update. Ora faccio un po' di controlli!

    (Ho impostato 'user' come chiave primaria, ma ancora il problema persiste).

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    42
    Originariamente inviato da pauli
    all'inizio delo script c'è un controllo che verifica l'esistenza della tabella: se la tabellla non esiste, viene creata.
    Infatti: confermo che questo controllo fallsce!

    Quindi, anche se ancora non ho raggiunto il risultato voluto, ora la questione si sposta su altri fronti: possiamo dire che il problema non è risolto!

    Grazie a tutti

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 © 2025 vBulletin Solutions, Inc. All rights reserved.