Non riesco a inserire gli apostrofi in MySQL

MySQL richiede un'attenta gestione del testo per la gestione degli apostrofi.

Delimitatore di apostrofo

Nella versione SQL di MySQL, l'inizio e la fine di una stringa sono indicati da virgolette singole o virgolette doppie. I seguenti due esempi sono validi:

INSERISCI IN COMPANY_TABLE (company_name) VALUE "The Fish Shack";

INSERISCI IN COMPANY_TABLE (company_name) VALORI "The Fish Shack";

Tuttavia, il seguente esempio genera un errore:

INSERISCI IN COMPANY_TABLE (tag_line) VALUES 'Eat at Joe's - It's Good Food!';

SQL interpreta la stringa come "'Eat at Joe'", con tutto ciò che segue dopo il secondo apostrofo come sbagliato. Il seguente testo non risolve il problema:

INSERISCI IN COMPANY_TABLE (tag_line) VALORI "Mangia a Joe's - It's Good Food!";

Ciò funzionerebbe se il testo avesse un singolo apostrofo tra le virgolette doppie ma questo testo ne ha due. Inoltre, poiché alcuni linguaggi di programmazione delle pagine Web utilizzano virgolette doppie, è consigliabile evitare di utilizzarli nel proprio SQL.

I due apostrofi e la barra invertita

La soluzione è determinata da MySQL che interpreta i due apostrofi in una riga '', come una virgoletta singola per i dati dei caratteri. Utilizzando un carattere barra rovesciata, o "\", immediatamente prima che un apostrofo nei dati abbia lo stesso effetto. MySQL considera la combinazione del backslash e di altri caratteri speciali come una sequenza di escape, creando un personaggio tra i due. I seguenti esempi risolvono il problema:

INSERISCI IN COMPANY_TABLE (tag_line) VALUES 'Eat at Joe's - It's Good Food!';

INSERISCI IN COMPANY_TABLE (tag_line) VALUES 'Eat at Joe's - It's Good Food!';

Quando si scrivono programmi per creare frasi in MySQL, la prima cosa da fare è esplorare tutte le stringhe di testo e aggiungere un apostrofo o una barra rovesciata prima degli apostrofi nei dati.

Funzione Addslashes

Il linguaggio di programmazione web PHP è spesso usato in combinazione con MySQL, questo ha una funzione chiamata addslashes per convertire automaticamente gli apostrofi. Esegui semplicemente la funzione dei dati del tipo di stringa come in questo esempio:

$ tag_line = addslashes ($ tag_line);

Funzione Stripslashes

Dopo aver convertito apostrofi alle variabili di dati di backslash e apostrofi, potrebbe essere necessario riconvertire in dati normali. La funzione strips strips PHP assolve questo compito in un unico passaggio. Usalo come il seguente esempio:

$ tag_line = stripslashes ($ tag_line);