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
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
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
![]()
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.
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".
Si puo' fare in entrambi i modi. Pero' come hai messo tu non funziona perche' il valore va messo tra apici.[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]
Poi ... volendo c'e' ne pure un terzo di modo..
![]()
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
[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.
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.[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]
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.
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.
![]()
su questo hai ragione ma per "convenzione" un campo id è numerico ed è per questo che ho ragionato in questo modo.[supersaibal]Originariamente inviato da piero.mac
Nessuno ha detto che quel campo sia numerico. [/supersaibal]
sarebbe curioso sapere di che tipo è dall'autore della discussione.![]()
Guarda che e' sesso degli angeli...[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]
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.