Nemohu vložit apostrofy do MySQL
Oddělovač apostrofů
V SQL verzi MySQL je začátek a konec řetězce označen jednoduchými uvozovkami nebo dvojitými uvozovkami. Následující dva příklady jsou platné:
VLOŽTE DO COMPANY_TABLE (název_dotyku) HODNOTY "Fish Shack";
VLOŽTE DO COMPANY_TABLE (název_dotyku) HODNOTY "Fish Shack";
Následující příklad však generuje chybu:
VLOŽTE DO COMPANY_TABLE (tag_line) HODNOTY "Jíst u Joea - je to dobré jídlo!";
SQL interpretuje řetězec jako "Eat at Joe", "všechno po druhém apostrofu je špatné. Následující text nevyřeší problém:
VLOŽTE DO COMPANY_TABLE (tag_line) HODNOTY "Jíst u Joea - je to dobré jídlo!";
To by fungovalo, kdyby text měl jediný apostrof mezi dvojitými uvozovkami, ale tento text má dva. Také proto, že některé jazyky pro programování webových stránek používají dvojité uvozovky, můžete se jim vyhnout v SQL.
Dvojité apostrofy a obrácený pruh
Řešením je, že MySQL interpretuje dva apostrofy v řádku '' jako jediný citát pro znaková data. Pomocí znaku zpětného lomítka nebo "\" bezprostředně předtím, než má apostrof v datech stejný efekt. MySQL považuje kombinaci zpětného lomítka a dalších speciálních znaků za escape sekvenci, čímž vytvoří znak z obou. Následující příklady řeší problém:
VLOŽTE DO COMPANY_TABLE (tag_line) HODNOTY "Jíst v Joe's - je to dobré jídlo!";
VLOŽTE DO COMPANY_TABLE (tag_line) HODNOTY "Jíst v Joe's - to je dobré jídlo!";
Při psaní programů pro vytváření vět v MySQL je třeba nejprve prozkoumat všechny textové řetězce a přidat apostrofy nebo zpětné lomítko před apostrofy v datech.
Funkce Addslashes
Webový programovací jazyk PHP se často používá v kombinaci s MySQL, má funkci nazvanou addslashes, která automaticky převádí apostrofy. Jednoduše proveďte funkci dat typu řetězce jako v tomto příkladu:
$ tag_line = addslashes ($ tag_line);
Funkce Stripslashes
Jakmile převedete apostrofy na datové proměnné zpětného lomítka a apostrofy, bude pravděpodobně nutné převést zpět na normální data. Funkce PHP strippslash splňuje tento úkol v jediném kroku. Použijte jej jako následující příklad:
$ tag_line = stripylashes ($ tag_line);