Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 21

Discussione: sql Update anomala

  1. #11
    ho solo i campi necessari all'update, tipo:
    f_ass=32, f_res = 11

    viene composta in base ai valori del post e la composizione avviene correttamente, proverò a mettere gli spazi xò è strano che l'execute tronca prima del where e poi a stamparla esce per intero!

    Edit:
    Niente da fare, sempre tutti i records!
    File Reality.sys corrupted. Reboot universe (Y/N)? Y_

  2. #12
    [supersaibal]Originariamente inviato da LonelyWolf
    ho solo i campi necessari all'update, tipo:
    f_ass=32, f_res = 11

    viene composta in base ai valori del post e la composizione avviene correttamente, proverò a mettere gli spazi xò è strano che l'execute tronca prima del where e poi a stamparla esce per intero!

    Edit:
    Niente da fare, sempre tutti i records! [/supersaibal]
    Che si tronchi prima del where e' forse l'unica spiegazione logica. Prova ad immettere un palese errore di sintassi dopo il where e vedi se lo controlla....

    where id_pirla = '$id' ....

    Oppure prova ad immettere il valore esplicito nel SET.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #13
    Forse ci stiamo arrivando!

    Dunque mettendo nella clausola where il nome di un campo inesistente fa tutto come prima, ovvero modifica tutti i record.

    Se metto il valore del campo nel set tipo `f_ass` = '5' e lascio tutto invariato (con il where corretto) funziona e modifica solo la riga "incriminata".

    A questo punto come faccio? I valori dei campi sono da form non posso fare altrimenti.

    Proverò a farla generare a inizio pagina, magari qualke microsecondo di anticipo può funzionare.
    File Reality.sys corrupted. Reboot universe (Y/N)? Y_

  4. #14
    [supersaibal]Originariamente inviato da LonelyWolf
    Forse ci stiamo arrivando!

    Dunque mettendo nella clausola where il nome di un campo inesistente fa tutto come prima, ovvero modifica tutti i record.

    Se metto il valore del campo nel set tipo `f_ass` = '5' e lascio tutto invariato (con il where corretto) funziona e modifica solo la riga "incriminata".

    A questo punto come faccio? I valori dei campi sono da form non posso fare altrimenti.

    Proverò a farla generare a inizio pagina, magari qualke microsecondo di anticipo può funzionare. [/supersaibal]
    Ci stavo arrivando.... il problema e' che la stringa che passi ... e' una stringa.... anche i numeri dentro lo sono... dovresti presentare le variabili solo come valore...
    codice:
    $query = "UPDATE `dipendenti` 
              SET  f_ass = '$ass', f_res = '$res' 
              WHERE `id` = '$id' 
              LIMIT 1";

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #15
    Grazie piero ho appena trovato la soluzione, mi è venuto un dubbione su un controllo che facevo prima della composizione: in sostanza a $qry venivano aggiunti i vari campi e non sapendo se sarebbero stati 1 o più i campi aggiunti includevano anke la , per separarli.

    Prima di concatenarla alla query intera però dovevo togliere l'ultima virgola, se c'era, altrimenti la sintassi non sarebbe stata corretta.

    ecco la funzione che ho usato:
    Codice PHP:
    if ($qry[strlen($qry)-1] ==',') { $qry[strlen($qry)-1] = ''; } 
    E l'errore è proprio lì, non dovevo sostituire la virgola con ''(2 apici senza spazio) ma con ' ' (apice spazio apice) e funziona:
    Codice PHP:
    if ($qry[strlen($qry)-1] ==',') { $qry[strlen($qry)-1] = ' '; } 
    ora però devo fare un po' di testing ancora!
    File Reality.sys corrupted. Reboot universe (Y/N)? Y_

  6. #16
    Alleluja...

    Io uso un'altro sistema..... quando faccio un update ribatto tutto, se e' cambiato un valore questo viene aggiornato se uguale mysql lo skippa.

    Poi conto le righe... se tutti i valori erano uguali le righe sono zero ed avverto che nessuna modifica e' stata effettuata.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #17
    Non li metto tutti xkè i campi sono 16, per ogni campo devo fare un proprio controllo con un if x cui a monte ho detto:

    "una istruzione di concatenazione in + nell'if non mi costa nulla e la query rimane + corta, specie se c'è un errore diventa + leggibile!"

    ed invece per quella stupidata non andava lo stesso e l'errore non era visibile nella query!
    File Reality.sys corrupted. Reboot universe (Y/N)? Y_

  8. #18
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    1,476
    [supersaibal]Originariamente inviato da piero.mac
    Alleluja...

    Io uso un'altro sistema..... quando faccio un update ribatto tutto, se e' cambiato un valore questo viene aggiornato se uguale mysql lo skippa.

    Poi conto le righe... se tutti i valori erano uguali le righe sono zero ed avverto che nessuna modifica e' stata effettuata.

    [/supersaibal]
    ciao,

    mi interessa il tuo metodo. Puoi fare un piccolo esempio?

    Grazie

    ciao

    dies

  9. #19
    Non e' che servano esempi.... per fare un aggiornamento di solito si presenta un form con i dati esistenti precompilati. L'utente effettua le sue modifiche ed invia. Ora i casi possono essere due: ha modificato, oppure non ha modificato.

    Applico gli stessi controlli che si applicano all'insert (campi vuoti, valori ammessi ecc.) e passo tutto all'update. se il campo e' identico nulla verra' aggiornato e saranno zero le righe modificate.... se un campo cambia verra' aggiornato e sara' una riga modificata.

    that's all... in altre parole non mi vado a perdere per costruire delle query UPDATE ad hoc.. non ne vale la pena. Alcune tabelle hanno pure una trentina di campi. Tolto i campi che non si devono/possono modificare gli altri li ribatto tutti.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #20
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    1,476
    [supersaibal]Originariamente inviato da piero.mac
    Non e' che servano esempi.... per fare un aggiornamento di solito si presenta un form con i dati esistenti precompilati. L'utente effettua le sue modifiche ed invia. Ora i casi possono essere due: ha modificato, oppure non ha modificato.

    Applico gli stessi controlli che si applicano all'insert (campi vuoti, valori ammessi ecc.) e passo tutto all'update. se il campo e' identico nulla verra' aggiornato e saranno zero le righe modificate.... se un campo cambia verra' aggiornato e sara' una riga modificata.
    that's all... in altre parole non mi vado a perdere per costruire delle query UPDATE ad hoc.. non ne vale la pena. Alcune tabelle hanno pure una trentina di campi. Tolto i campi che non si devono/possono modificare gli altri li ribatto tutti.

    [/supersaibal]
    ma è tutto chiaro, solo la parte che ho evidenziato in grassetto.
    Me la puoi spiegare?

    ciao

    dies

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