Nie mogę wstawiać apostrofów w MySQL
Ogranicznik apostrofu
W wersji SQL MySQL początek i koniec ciągu są wskazywane przez pojedyncze cudzysłowy lub podwójne cudzysłowy. Następujące dwa przykłady są prawidłowe:
INSERT INTO COMPANY_TABLE (company_name) WARTOŚCI "The Fish Shack";
INSERT INTO COMPANY_TABLE (company_name) WARTOŚCI "The Fish Shack";
Jednak poniższy przykład generuje błąd:
INSERT INTO COMPANY_TABLE (tag_line) VALUES 'Eat at Joe's - It's Good Food!';
SQL interpretuje ciąg jako "Zjadaj w Joe", a wszystko po drugim apostrofu jest błędne. Poniższy tekst nie rozwiązuje problemu:
INSERT INTO COMPANY_TABLE (tag_line) WARTOŚCI "Jedz w Joe's - It's Good Food!";
To działałoby, gdyby tekst miał pojedynczy apostrof między podwójnymi cytatami, ale ten tekst ma dwa. Ponadto, ponieważ niektóre języki programowania stron internetowych używają podwójnych cudzysłowów, możesz nie używać ich w swoim SQL.
Podwójne apostrofy i odwrócony pasek
Rozwiązanie jest określane przez MySQL interpretujące dwa apostrofy z rzędu ", jako pojedynczy cytat dla danych znakowych. Używając znaku ukośnika odwrotnego lub "\", bezpośrednio przed apostrofem w danych ma taki sam efekt. MySQL traktuje kombinację ukośnika odwrotnego i innych znaków specjalnych jako sekwencji specjalnej, tworząc znak z dwóch. Poniższe przykłady rozwiązują problem:
INSERT INTO COMPANY_TABLE (tag_line) WARTOŚCI "Jedz w Joe" - to dobre jedzenie! ";
INSERT INTO COMPANY_TABLE (tag_line) WARTOŚCI "Jedz u Joe's - It \ 's Good Food!";
Podczas pisania programów do tworzenia zdań w MySQL, pierwszą rzeczą do zrobienia jest zbadanie wszystkich ciągów tekstowych i dodanie apostrofu lub ukośnika wstecznego przed apostrofami w danych.
Funkcja Dodatków
Język programowania PHP jest często używany w połączeniu z MySQL, ma on funkcję o nazwie addslashes, która automatycznie konwertuje apostrofy. Po prostu wykonaj funkcję danych typu string, jak w tym przykładzie:
$ tag_line = addslashes ($ tag_line);
Funkcja Stripslashes
Po przekonwertowaniu apostrofów na zmienne danych w ukośnikach odwrotnych i apostrofach konieczne może być przekonwertowanie z powrotem na normalne dane. Funkcja stripslashes PHP realizuje to zadanie w jednym kroku. Użyj go jako następującego przykładu:
$ tag_line = stripslashes ($ tag_line);