Non è possibile inserire un apostrofo in MySQL

March 23

Non è possibile inserire un apostrofo in MySQL


Il carattere di apostrofo pone un problema in tutti i dialetti SQL utilizzati per la programmazione di database. Per MySQL, come nelle altre versioni di SQL, programmatori circondano dati di carattere con gli apostrofi per inserire dati in una tabella, aggiornarlo o per svolgere altre funzioni di database. Il problema sorge quando i dati carattere stesso contiene apostrofi come segni di punteggiatura. La soluzione sta nel porre un carattere speciale che precede immediatamente eventuali apostrofi di dati di carattere.

Apostrophe delimitatore

Nella versione di MySQL di SQL, si segnale l'inizio e la fine di una stringa sia con apici singoli o doppi apici. Entrambi gli esempi seguenti sono validi:

INSERT INTO COMPANY_TABLE (company_name) VALORI 'The Fish Shack';

INSERT INTO COMPANY_TABLE (company_name) VALORI "The Fish Shack";

Il seguente esempio, tuttavia, crea un errore:

INSERT INTO COMPANY_TABLE (TAG_LINE) VALORI 'Eat at Joe - E' Good Food! ';

SQL vuole interpretare la stringa come " 'Mangiare a Joe'," con tutto ciò che segue il secondo apostrofo come erronea. Il testo che segue non risolve il problema:

INSERT INTO COMPANY_TABLE (TAG_LINE) valori "Eat at Joe - E 'Good Food!";

Questo potrebbe funzionare se il testo aveva solo un apostrofo tra le virgolette, ma questo testo ha due. Inoltre, poiché alcuni linguaggi di programmazione web-page usare le virgolette stessi, si potrebbe desiderare di evitare di usarle nel vostro SQL.

Apostrofi doppie e barra rovesciata

La soluzione di MySQL è quello di interpretare due apostrofi in una riga - '' - come un singolo carattere di dati preventivo. Un carattere backslash, o "\", che precede immediatamente un apostrofo nei dati ha lo stesso effetto. MySQL tratta la combinazione di barra rovesciata e altri caratteri speciali come una sequenza di escape, creando di fatto un carattere su due. Entrambi dei seguenti esempi risolvere il problema:

INSERT INTO COMPANY_TABLE (TAG_LINE) VALORI 'Eat at Joe' di - E 'di Good Food!';

INSERT INTO COMPANY_TABLE (TAG_LINE) VALORI 'Mangiare a Joe \' s - E \ 's Good Food!';

Quando si scrive programmi che creano le dichiarazioni di MySQL, è necessario eseguire la scansione di tutte le stringhe di testo e aggiungere o un apostrofo o backslash prima di qualsiasi apostrofi nei dati.

addslashes Funzione

Il linguaggio di programmazione web PHP, spesso utilizzato in combinazione con MySQL, ha una funzione addslashes costruito per convertire automaticamente apostrofi al backslash-apostrofo coppie. È sufficiente eseguire la funzione sulle vostre stringhe di dati come in questo esempio:

$ TAG_LINE = addslashes ($ TAG_LINE);

stripslashes Funzione

Una volta che avete convertito apostrofi nelle variabili di dati per backslash-apostrofi, potrebbe essere necessario convertire di nuovo a dati normali. La funzione PHP stripslashes svolge questo compito per voi in un unico passaggio. Utilizzare come nel seguente esempio:

$ TAG_LINE = stripslashes ($ TAG_LINE);