Nu pot introduce apostrofii în MySQL

MySQL necesită o manipulare atentă a textului pentru manipularea apostrofelor.

Aparat de separare a apostrofelor

În versiunea SQL a MySQL, începutul și sfârșitul unui șir este indicat prin citate simple sau ghilimele duble. Următoarele două exemple sunt valide:

INSCRIEȚI ÎN COMPANY_TABLE (nume_companie) VALUES "The Shack Fish";

INSCRIEȚI ÎN COMPANY_TABLE (nume_companie) VALORI "The Shack Fish";

Cu toate acestea, exemplul următor generează o eroare:

INSCRIEȚI ÎN COMPANY_TABLE (tag_line) VALORI "Mănâncă la Joe - E bine de mâncare!";

SQL interpretează șirul ca "Mănâncă la Joe", cu totul după cel de-al doilea apostrof ca fiind greșit. Următorul text nu rezolvă problema:

INSCRIEȚI ÎN COMPANY_TABLE (tag_line) VALORI "Mănâncă la Joe's - E bine alimente!";

Acest lucru ar funcționa dacă textul avea un singur apostrof între citatele duble, dar acest text are două. De asemenea, pentru că unele limbi de programare a paginilor web utilizează ghilimele duble, poate doriți să evitați să le folosiți în SQL.

Apostrofele duble și bara inversată

Soluția este determinată de interpretarea de către MySQL a două apostrofii într-un rând ", ca o singură citare pentru datele de caractere. Folosind un caracter din spate, sau "\", imediat înainte ca un apostrof în date să aibă același efect. MySQL tratează combinația dintre backslash și alte caractere speciale ca o secvență de evacuare, creând un personaj din cele două. Următoarele exemple rezolvă problema:

INSCRIEȚI ÎN COMPANY_TABLE (tag_line) VALORI "Mănâncă la Joe's - E bine de mâncare!";

INSCRIEȚI ÎN COMPANY_TABLE (tag_line) VALORI "Mănâncă la Joe - E bine!

Când scrieți programe pentru a crea propoziții în MySQL, primul lucru pe care trebuie să-l faceți este să explorați toate șirurile de text și să adăugați fie un apostrof sau un backslash înaintea apostrofelor din date.

Funcția Addslashes

Limba de programare web PHP este adesea folosită în combinație cu MySQL, aceasta are o funcție numită addslashes pentru a converti automat apostrofele. Pur și simplu efectuați funcția datelor de tip șir, ca în acest exemplu:

$ tag_line = addslashes ($ tag_line);

Stripslashes function

Odată ce ați convertit apostrofele la variabilele de date ale backslash-ului și ale apostrofelor, este posibil să fiți nevoit să convertiți înapoi la date normale. Funcția PHP stripslashes îndeplinește această sarcină într-un singur pas. Utilizați-l ca următorul exemplu:

$ tag_line = stripslashes ($ tag_line);