Nemohu vložit apostrofy do MySQL

MySQL vyžaduje pečlivé zpracování textu pro manipulaci s apostrofy.

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);