Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: giusta o sbagliata

  1. #1

    giusta o sbagliata

    ciao a tutti, volevo sapere se questa query può funzionare oppure no

    $sql_mod = "update cart_prodotti set id_sotcat = '$id_sotcat' where id_sotcat = '$id_sot_old'";

    Grazie mille

  2. #2
    no.
    hai un concatenamento di stringa dove mancano i "."


    $sql_mod = "update cart_prodotti set id_sotcat = ".$id_sotcat." where id_sotcat = ".$id_sot_old;

    così funziona


  3. #3
    Si, funziona.

    Il where viene risolto "prima" della definizione SET dei campi. Quindi trova il vecchio valore e ci mette il nuovo.


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

  4. #4
    supponendo il campo id sia un numerico, metterlo tra apici genera errore no?

    per questo imho non dovrebbe funzionare.

    le variabili vengono risolte se la stringa è racchiusa dalle virgolette invece che dagl'apici, ma è un modo che mi rende difficile la lettura quindi, anche se non necessario, concateno sempre nel modo "classico".

  5. #5
    [supersaibal]Originariamente inviato da Tymba
    no.
    hai un concatenamento di stringa dove mancano i "."


    $sql_mod = "update cart_prodotti set id_sotcat = ".$id_sotcat." where id_sotcat = ".$id_sot_old;

    così funziona

    [/supersaibal]
    Si puo' fare in entrambi i modi. Pero' come hai messo tu non funziona perche' il valore va messo tra apici.


    Poi ... volendo c'e' ne pure un terzo di modo..


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

  6. #6
    [supersaibal]Originariamente inviato da piero.mac Pero' come hai messo tu non funziona perche' il valore va messo tra apici.
    [/supersaibal]

    non capisco...
    i valori numerici non vanno tra apici.

  7. #7
    [supersaibal]Originariamente inviato da Tymba
    supponendo il campo id sia un numerico, metterlo tra apici genera errore no?

    per questo imho non dovrebbe funzionare.

    le variabili vengono risolte se la stringa è racchiusa dalle virgolette invece che dagl'apici, ma è un modo che mi rende difficile la lettura quindi, anche se non necessario, concateno sempre nel modo "classico". [/supersaibal]
    Assolutamente no. Nessuno ha detto che quel campo sia numerico. Sopratutto se dovesse arrivare da un POST o GET sarebbe considerato stringa e convertito dal CAST in modo automatico. Metti sempre le virgolette a racchiudere i valori e non riceverai mai un errore per questo.


    Il miglior concatenamento e' il terzo citato, quello con la graffa. Sinceramente il punto di concatenamento nelle query non mi piace e rende di difficile lettura la query.

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

  8. #8
    forse non sono riuscito a spiegarmi

    $mio_nome = 'valerio';
    $sql = "update anagrafica set nome = '".$mio_nome."' where id = 12';

    questa per me è corretta. il valore nella stringa sql è racchiuso tra apici perchè è una stringa e devo variare un campo di tipo text


    $anni = 27;

    $sql = "update anagrafica set anni=".$anni." where id = 12":

    questa per me è corretta. il valore è numerico, php fa il cast automatico tra integer e string quando deve concatenare la stringa e la stringa sql ha un valore non racchiuso tra apici in quanto sta aggiornando un campo integer.

    questo è quello che tentavo di spiegare prima.

  9. #9
    [supersaibal]Originariamente inviato da piero.mac
    Nessuno ha detto che quel campo sia numerico. [/supersaibal]
    su questo hai ragione ma per "convenzione" un campo id è numerico ed è per questo che ho ragionato in questo modo.
    sarebbe curioso sapere di che tipo è dall'autore della discussione.

  10. #10
    [supersaibal]Originariamente inviato da Tymba
    su questo hai ragione ma per "convenzione" un campo id è numerico ed è per questo che ho ragionato in questo modo.
    sarebbe curioso sapere di che tipo è dall'autore della discussione. [/supersaibal]
    Guarda che e' sesso degli angeli...

    prova tutte le combinazioni e vedrai che i numerici funzionano sia con sia senza virgolette.

    La prima query e' formalmente corretta. Queste tre sono tutte equivalenti e funzionanti.

    codice:
    "update tabella 
    set id_sotcat = '$id_sotcat' 
    where id_sotcat = '$id_sot_old'";
    
    "update tabella 
    set id_sotcat = '".$id_sotcat."' 
    where id_sotcat = '".$id_sot_old."'"; 
    
    "update tabella 
    set id_sotcat = '{$id_sotcat}' 
    where id_sotcat = '{$id_sot_old}'";

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

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.