Jeg kan ikke sette inn en apostrof i MySQL

Jeg kan ikke sette inn en apostrof i MySQL


Apostrof karakter utgjør et problem i alle SQL dialekter brukes for database programmering. For MySQL, som i andre versjoner av SQL, programmerere surround tegndata med apostrofer å sette inn data i en tabell, oppdatere den eller utføre andre databasefunksjoner. Problemet oppstår når tegndata i seg selv inneholder apostrofer som punktum. Løsningen ligger i å plassere en spesiell karakter umiddelbart før noen apostrofer i tegndata.

Apostrophe skilletegn

I MySQL versjon av SQL, signaliserer du i begynnelsen og slutten av en streng med enten én eller doble anførselstegn. Begge eksemplene nedenfor er gyldige:

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

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

Følgende eksempel skaper imidlertid en feil:

INSERT INTO COMPANY_TABLE (TAG_LINE) VERDIER "Eat at Joe - Det er god mat! ';

SQL ønsker å tolke strengen som " 'Eat at Joe», med alt etter den andre apostrof som feilaktig. Følgende tekst ikke løser problemet:

INSERT INTO COMPANY_TABLE (TAG_LINE) VERDIER "Eat at Joe - Det er god mat!";

Dette ville fungere hvis teksten hadde bare en apostrof mellom de doble anførselstegn, men denne teksten har to. Også fordi noen Web-side programmeringsspråk bruke doble anførselstegn i seg selv, kan det være lurt å unngå å bruke dem i SQL.

Doble apostrofer og skråstrek Escape

MySQL løsning er å tolke to apostrofer på rad - '' - som et enkelt sitat data karakter. En omvendt skråstrek, eller "\", umiddelbart før en apostrof i data har samme effekt. MySQL behandler kombinasjonen av backslash og andre spesialtegn som en escape-sekvens, effektivt skaper en karakter ut av to. Begge de følgende eksempler løse problemet:

INSERT INTO COMPANY_TABLE (TAG_LINE) VERDIER "Eat at Joe 's - Det er god mat!';

INSERT INTO COMPANY_TABLE (TAG_LINE) VERDIER "Eat at Joe \ 's - It \' s Good Food! ';

Når du skriver programmer som skaper MySQL uttalelser, må du først skanne alle tekststrenger og legge enten en apostrof eller backslash før noen apostrofer i dataene.

addslashes Funksjon

PHP Web programmeringsspråk, ofte brukt i forbindelse med MySQL, har en addslashes funksjon bygget i å automatisk konvertere apostrofer til backslash-apostrof par. Bare utføre funksjonen på data strenger som i dette eksempelet:

$ TAG_LINE = addslashes ($ TAG_LINE);

Stripslashes Funksjon

Når du har konvertert apostrofer i datavariabler til backslash-apostrofer, må du kanskje konvertere dem tilbake til normale data. PHP stripslashes funksjonen utfører denne oppgaven for deg i ett enkelt trinn. Bruk den som i følgende eksempel:

$ TAG_LINE = stripslashes ($ TAG_LINE);