Domanda

Ho già aggiornato molti record, ma quando è arrivata a una parola che contiene un preventivo ottengo questo errore: " ERRORE: citazione non chiusa @ 1357 "

So perché mi sta dando questo errore, semplicemente non so come risolverlo.

Ecco un esempio: AGGIORNA invnum SET cAccountName = sostituisci ( cAccountName , 'JOHN'S', 'BEN')

Grazie in anticipo.

È stato utile?

Soluzione

Escape citazioni all'interno di stringhe:

UPDATE invnum SET cAccountName = replace(cAccountName,'JOHN\'S','BEN')

Vuoi stare molto attento a questo - non affrontarlo correttamente è la fonte di SQL attacchi di iniezione ed è una delle principali fonti di problemi di sicurezza.

Altri suggerimenti

se stai utilizzando uno script per aggiornare i tuoi record, utilizza una funzione di escape incorporata. per php che sarebbe mysql_real_escape_string

Prova invece:

UPDATE invnum SET cAccountName = replace(cAccountName,"JOHN'S","BEN")

Se è necessario utilizzare entrambi i tipi di virgolette all'interno di una stringa, è necessario evitare il tipo di virgolette che si utilizza per circondare la stringa quando si verificano al suo interno (altrimenti l'interprete SQL penserà che la stringa termini prima di essa effettivamente.

Ad esempio:

Johns   becomes "Johns"
John's  becomes "John's" or 'John\'s'
"John"  becomes '"John"' or "\"John\""

eccetera.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top