A mysql adatbázisban a szöveg és html kód helyes tárolásának módja az orosz verem túlcsordulása

Hogyan feldolgozhatok szöveges és html kódot a MySQL adatbázisba való íráshoz? Melyik áramkört?

Az internetet mindenütt megkérdezték az adatbázisba való íráshoz a mysql_real_escape_string () használatához, és inkább, hogy semmi sem szükséges. De mi a helyzet a speciális kém html-vel? Például a "⇔", ha beillesztett egy űrlapba, szimbólumként jelenik meg, nem pedig html kódként a sivúrhoz. Ennek megfelelően, amikor az adatbázisba írunk, ez egy "?"

Ahogy értem, a szöveg beillesztése előtt szükséges a szöveg feldolgozása:

Ennek megfelelően, amikor megjelenik az adatbázisból a kijelzőre, akkor a következő szöveget kell feldolgoznia:

Ez az algoritmus helyes-e, vagy valamilyen módon másnak kell lennie?

Site kódolás utf8.

A kérdés nagyon egyszerű, de ugyanakkor nagyon jellemző.

Ez tökéletesen összeállítja a kezdő PHP felhasználók legnépszerűbb tévhitét. Próbáljuk megérteni őket.

Az elsõ dolog tanulni nem az, hogy összezavarja az adattárolást és az SQL lekérdezésekben való felhasználását. Ezek teljesen más dolgok. A tárolást illetően meg kell érteni, hogy minden adat tárolható az adatbázisban, ugyanakkor ezeket tárolni kell. Azaz, hogy bármilyen módon tároljuk őket, általában nincs szükség feldolgozásra.

Következésképpen, a postai úton feltett kérdések megválaszolása (nem teljesen helyes, ahogy látjuk), a kérdések:

  • Hogyan tárolhat minden adatot az adatbázisban? Az adatokat az aktuálisan tárolni kell.
  • Hogyan lehet adatokat feldolgozni egy adatbázisban? Nincs mód. Semmilyen esetben nem lehet feldolgozni.
  • HTML tárolása? Nincs szükség speciális műveletekre a HTML-hez, sem egyéb adat előállításához. Minden adatot ugyanúgy tárolunk.

Az adatok felhasználása SQL lekérdezésekben.

De ez teljesen más kérdés. Az egyetlen, amelyre válaszul valamit meg kell tennünk. De nem fogjuk megérinteni az adatokat magunkkal. Igen, igen! Még SQL lekérdezés esetén sem fogjuk feldolgozni az adatokat. Az a tény, hogy "a mysql_real_escape_string () használatával az adatbázisba való írás" egyszerűen varázslatos ostobaság, sajnos több millió példányban reprodukálható.

És az egyetlen helyes módszer az adatok SQL-lekérdezéshez való hozzáadására a helyőrzőkön keresztül.

Vagyis az SQL lekérdezésben lévő adatok használatához először írja be a kérdőjeleket a helyükre:

ez egyébként minden kérelemre érvényes. SELECT ugyanúgy írunk:

Ezt követően elő kell készítenie a kérést, majd végrehajtania, külön-külön el kell hagynia a változókat. Így működik az OEM-rel:

vagyis ez az ötlet: ha valamilyen változót pótolni akarunk a lekérdezésben, inkább kérdőjelet kell felmutatnunk. És magát a változót is át kell adni.

Így garantált lesz minden hiba és bosszúság ellen, mert a PHP maga feldolgoz minden számunkra vonatkozó változót és helyesli azt.

HTML speciális karakterek

Úgy gondolom, hogy a figyelmes olvasó már felfogta az ötletet: a HTML általában semmi köze az adatbázishoz. Nem a legkevésbé. Ezek teljesen más dolgok. Ez azt jelenti, hogy a PHP felhasználónak soha nem szabad elképzelnie, hogy használja a "HTML" szót egy bizonyos munkához az adatbázisban, és amikor a HTML-vel dolgozik, akkor a függvény, amelyben a "mysql" szó fordul elő.

A HTML-vel való együttmûködéshez a HTML-vel való együttmûködést kell használni.

Ez azt jelenti, hogy ha HTML-szöveget fogunk HTML-ben megjeleníteni, akkor ki kell adnunk.

De ha HTML-ben szeretnénk kinyomtatni a szöveget, ez nem HTML, akkor meg kell formáznunk úgy, hogy véletlenül ne dobja el az elrendezést. Általában erre a célra a htmlspecialchars ()

Ha egy karaktert kérdőjelként tárolnak, akkor ez nem egy HTML kódolási probléma, hanem olyan kódolási probléma, amely egyszerűen nem támogatja ezt a karaktert. Annak érdekében, hogy az adatbázis képes tárolni ⇔ típusú szimbólumokat. meg kell adni az utf8 kódolást. A PHP szkriptnek az adatbázisba történő csatlakozáskor az utf8-ban kell beállítania a kapcsolódást. Ugyanakkor a formanyomtatvány megjelenítésével a felhasználónak ki kell adnia a Tartalmi típusú fejlécet az UTF-8 kódolással.

Ezután az összes karaktert sértetlenül rögzítik.