Modul corect de stocare a textului și a codului html în baza de date MySQL este saturarea stivei în limba rusă

Cum ar trebui să proces text și cod html pentru scrierea în baza de date MySQL? Care circuit?

Rummaged Internet, peste tot sfaturi pentru a scrie la baza de date pentru a utiliza mysql_real_escape_string (), și mai mult ca nimic este necesar. Dar ce zici de spion special html? De exemplu, "⇔" când este inserat într-un formular este afișat ca un simbol, nu ca un cod html pentru sivol. În consecință, atunci când scrieți în baza de date, se transformă într-un "?"

După cum am înțeles, este necesar să procesați acest text înainte de a introduce:

În consecință, atunci când afișați din baza de date pe ecran, trebuie să procesați textul astfel:

Este acest algoritm corect sau trebuie făcut într-un fel diferit?

Codificarea site-ului utf8.

Întrebarea este foarte simplă, dar în același timp foarte caracteristică.

Acesta asamblează perfect cele mai populare concepții greșite ale utilizatorilor începători PHP. Să încercăm să le înțelegem.

Primul lucru pe care trebuie să-l învățați nu este să confundați stocarea datelor și utilizarea lor în interogările SQL. Acestea sunt lucruri complet diferite. În ceea ce privește stocarea, trebuie să se înțeleagă că toate datele pot fi stocate în baza de date și, în același timp, ele ar trebui să fie stocate ca atare. Asta este, pentru a le stoca în orice mod, în general, nu este nevoie de procesare.

În consecință, răspunzând la întrebările adresate postului (nu chiar corect, după cum vedem), întrebările:

  • Cum să stocați orice date în baza de date? Datele trebuie păstrate așa cum este.
  • Cum se procesează datele pentru o bază de date? Nici un fel. În nici un caz nu pot fi procesate.
  • Cum se stochează HTML? Nu sunt necesare acțiuni speciale pentru codul HTML, nici pentru alte date care să se producă. Toate datele sunt stocate exact în același mod.

Utilizarea datelor în interogările SQL.

Dar aceasta este o chestiune complet diferită. Singurul ca răspuns la care va trebui să facem ceva. Dar noi nu vom atinge datele noi oricum. Da, da! Chiar și pentru o interogare SQL, nu vom procesa datele în nici un fel. Faptul că „Consiliul pentru a scrie la baza de date pentru a utiliza mysql_real_escape_string ()“ - Această prostie incredibilă, din păcate, replicate în milioane de exemplare.

Și singura modalitate corectă de a adăuga date la o interogare SQL este de a face acest lucru prin intermediul substituentilor.

Adică, pentru a utiliza orice date într-o interogare SQL, trebuie să scrieți mai întâi semnele de întrebare în locul lor:

acest lucru, apropo, se aplică tuturor cererilor. SELECT scriem în același mod:

După aceasta, va trebui să pregătiți cererea și apoi să o executați, trecând variabilele separat. Iată cum funcționează cu DOP:

adică ideea este: dacă trebuie să înlocuim o anumită variabilă cu interogarea, trebuie să punem în schimb un semn de întrebare. Și variabila în sine pentru a transfera după.

Astfel, vom fi garantate împotriva oricăror erori și anomalii, deoarece PHP în sine va procesa toate variabilele pentru noi și va face bine.

Caractere speciale HTML

Cred că cititorul atent a înțeles deja ideea: în general, HTML nu are nimic de-a face cu baza de date. Nici cea mai mică. Acestea sunt lucruri complet diferite. Aceasta este, utilizatorul PHP nu ar trebui să vină cu ideea de a utiliza o funcție în care cuvântul „HTML“ pentru orice lucrare cu baza de date, și atunci când se lucrează cu HTML - o funcție în care cuvântul „mysql“.

Funcțiile pentru lucrul cu HTML ar trebui să fie utilizate pentru lucrul cu HTML.

Asta este, dacă vom trimite text HTML în HTML, atunci ar trebui să ieșim așa cum este.

Dar dacă vom trimite text în HTML care nu este HTML, trebuie să îl formatăm astfel încât să nu strică în mod accidental aspectul. De obicei, în acest scop, funcția htmlspecialchars ()

Dacă un caracter este stocat ca semn de întrebare, atunci aceasta nu este o problemă de codare HTML, ci o problemă de codare care pur și simplu nu suportă acest caracter. Pentru ca baza de date să stocheze simbolurile tipului ⇔. trebuie să aibă codare utf8. Și, de asemenea, scriptul PHP, la conectarea la baza de date, ar trebui să stabilească codificarea acestei conexiuni în utf8. În același timp, prin afișarea formularului către utilizator, acesta ar trebui să emită antetul tipului de conținut cu codificarea UTF-8.

Și apoi toate personajele vor fi înregistrate intacte.