Turinys
Jei yra kažkas, kas gali sugadinti programą, tai yra tada, kai nenaudojame reikiamų išteklių, kad ji būtų greitesnė ir saugesnė, yra daug būdų, kaip pagerinti programų greitį ir saugumą, tai galima padaryti naudojant geresnius kūrimo modelius, didesnio saugumo taikymas serveriuose ir kt.Tačiau yra momentas, kai daug kartų nenustojame galvoti ir tai yra ta priemonė, kurią mums suteikia kalba, yra geriausia mūsų atliekamam darbui. Tai atsitinka daug PHP Nepaisant to, kad daugelį metų buvo įspėjimas nesinaudoti šia funkcija mysql_connect () užmegzti ryšius su Duomenų bazės, atrodo, kad daugelis kūrėjų nesuvokia didelės klaidos, kurią daro, kai ją naudoja.
PHP turi vietinį palaikymą daugeliui variklių Duomenų bazės egzistuojančių rinkoje, tačiau jos integracija su MySQL tai beveik privalomas atspirties taškas daugumai vartotojų.
mysql_connect ()Iš versijos 5.5 apie PHP klasikinė funkcija mysql_connect () yra valstybėje nebenaudojamas, tai yra, ji pasenusi ir primygtinai rekomenduojama jos nenaudoti, nes ji nebus įtraukta į būsimas kalbos versijas.
Ryšio užmezgimo alternatyva yra du elementai. Pirmasis yra naudoti tą pačią kalbos struktūrą ryšiams užmegzti arba naudoti naują biblioteką. MySQL. Čia gali kilti pirmasis klausimas, kodėl tiesiog galvoti MySQL? Na, atsakymas yra paprastas, tai yra pradžia, tai paprasčiausias ir naudingiausias dalykas, kurį galime paaiškinti iš pradžių, jei žinome šią bazę, galime ekstrapoliuoti kitus variklius ir vairuotojus.
Pirmoji ryšio alternatyva Duomenų bazė yra naudoti pačios kalbos duomenų objektą, vadinamą PHP duomenų objektas arba jo santrumpa SKVN. Tai ne kas kita, kaip didelis rašytinis kalbos pratęsimas C tai leidžia užmegzti ryšius su įvairių tipų varikliais Duomenų bazės ir kad jis turi standartinius metodus, kurie suteikia mums galimybę rašyti kelių platformų programas, tai yra, mes neturime keisti sintaksės, jei pakeisime duomenų bazės variklį.
Iš pradžių pasakėme, kad sutelksime dėmesį MySQLtačiau, jei užmezgsime ryšį per SKVN tai, ką darome, galime pritaikyti kitiems varikliams. Norėdami tai padaryti, turime tik suaktyvinti arba įtraukti minėtų variklių tvarkykles ir suaktyvinti jas faile php.ini iš serverio.
Norėdami prisijungti prie a Duomenų bazė mes tiesiog turime sukurti nuorodą, naudodami jai tinkamą metodą SKVN ryšys pasiekiamas naudojant tris pagrindinius parametrus - duomenų bazės serverio pavadinimą, vartotojo vardą ir slaptažodį.
Vienintelis šių trijų parametras, kurį reikia paaiškinti, yra duomenų bazės serverio parametras, anksčiau turėjome pasirinkti Duomenų bazė Naudodamiesi konkrečia funkcija užmezgus ryšį, šiuo atveju tai darysime toje pačioje eilutėje, todėl mūsų serverio pavadinimo eilutė atrodytų taip:
mysql: pagrindinis kompiuteris = pagrindinio kompiuterio vardas; db vardas = db vardas
Matome, kad iš pradžių nurodome variklį, šiuo atveju mysql tada su pagrindiniu kompiuteriu mes jums pasakysime, kuris yra serveris, čia jis gali būti IP arba vietinis šeimininkas jei serveris yra vietinis, pagaliau su dbname perduodame duomenų bazės, prie kurios norime prisijungti, pavadinimą. Toliau esančiame paveikslėlyje stebėsime, kaip naudojant kodą reikia prisijungti SKVN:
DIDELIS
Kadangi mes žinome pradinį prisijungimo žingsnį, dabar turime sužinoti, kaip galime vykdyti užklausas, paprastai anksčiau mes vykdydavome tiesioginę užklausą pagal jos parametrus, todėl ši praktika nėra visiškai saugi, nes tai daro mus linkusius tipo atakos SQL įpurškimas, SKVN leidžia mums naudoti vadinamąjį Paruošti kuokeliai Tai yra ne kas kita, kaip užklausos vykdymas parametrizuotu būdu, todėl pati biblioteka atlieka derinimo darbą ir yra mažiau linkusi į atakas. Toliau pažiūrėkime, kaip įvykdyti paprastą užklausą, o tada jos atitikmenį su Paruoštas Stamentas.Šioje paprastoje užklausoje manysime, kad turime lentelę Duomenų bazė skambinti Autorius kuris gauna autoriaus kodą, o po to - jo pavadinimą, žinoma, tai nėra tinkamos lentelės pavyzdys, mums įdomu tik žinoti, kaip veikia ryšys SKVN.
Paveikslėlyje matome, kad mes vadiname metodą, vadinamą užklausa () iš objekto, sukurto naudojant SKVN ryšio eilutę, tada be didelių problemų rašome savo užklausą:
DIDELIS
Problema ta, kad mes tiesiogiai gauname vertybes, todėl niekaip negalime to pagerinti ir pakartotinai panaudoti, jei padarysime a Paruoštas Stamentas, pamatysime, kad pirmiausia nurodome, kuri užklausa turi būti vykdoma, tada kitu metodu padarome ją efektyvią ir perduodame jai reikiamas vertes. Taip įjungiamas parametrų derinimo variklis. SKVN taip suteikiant papildomą apsaugos lygį. Toliau esančiame paveikslėlyje pažiūrėkime, kaip atrodytų ankstesnis pavyzdys Paruošti kuokeliai dabar.DIDELIS
Iš pirmo žvilgsnio tai gali atrodyti šiek tiek sudėtinga ir ne optimalu, tačiau jei analizuosime, pamatysime, kad pirmiausia nustatome vykdytiną užklausą, tada sukuriame masyvą su parametrais, kuriuos gaus mūsų užklausa, pavyzdžio atveju gauti autoriaus kodą ir jo vardą, galiausiai įvykdome užklausą ir perduodame jai parametrų masyvą.Jei norime pasikonsultuoti, kai jau įtraukėme kai kurias vertybes Duomenų bazė tai labai paprasta, mes tiesiog turime tai padaryti su užklausa PASIRINKTI, tai leis mums pateikti įrašus, anksčiau mes priklausėme nuo tokių funkcijų kaip mysql_fetch_array () arba mysql_fetch_assoc () kad vieną kartą suvartojus nebegalėjome vėl valdyti savo rezultatų.
Su SKVN Duomenis gausime tiesiogiai iš objekto, todėl vykdydami juos visada turėsime, toliau pateiktame pavyzdyje pažiūrėkime, kaip tai būtų daroma:
Matome, kaip iš pradžių darome a Paruoštas Stamentas, šiuo atveju atliekame paprastą užklausą, o tada su kilpa kol () mes įsigysime kiekvieną įrašą ir atspausdinsime, jei pastebėsime, kad nenurodome MySQL bet kurioje mūsų kodo vietoje, taigi, jei pakeisime ryšio eilutę ir naudosime kitą variklį, kuriame yra lentelė ir Duomenų bazė to paties pavadinimo ir struktūros, galėsime gauti jūsų duomenis nekeisdami kodo.
Ką MySQL yra populiariausias duomenų bazių variklis, kurį galima integruoti PHP, taip pat yra alternatyva ir ji yra „MySQLi“ kuri yra ne kas kita, kaip į objektą orientuota sąsaja. Jo veikimo būdas yra labai panašus į SKVNTačiau pasikeičia tai, kad jis skirtas tik šiam populiariam duomenų bazės varikliui, todėl kelių platformų konversija nebūtų įmanoma.
Jo ryšio eilutė yra šiek tiek sudėtingesnė, nes ji dalija serverio pavadinimą pagrindiniame kompiuteryje ir naudojamą duomenų bazę dviem skirtingais parametrais, be vartotojo vardo ir slaptažodžio, pažiūrėkime, kaip tai atrodo:
$ objConex = naujas mysqli (HostName, user, password, DatabaseName);
Šiame pavyzdyje pažiūrėkime, kaip užmezgame ryšį naudodami „MySQLi“ ir kaip galime atlikti paprastą duomenų įterpimą:
DIDELIS
Atkreipiame dėmesį, kad yra panašumų su SKVN turėdamas metodą užklausa () taip pat, tačiau tai veiks tik MySQL.Dabar mes gausime ir kartosime duomenis, kuriuos galime gauti iš užklausos, tam mes naudosime tą patį metodą užklausa () ir tada metodas fetch_assoc () norint gauti rezultatus:
Įdomiausias dalykas, kurį pastebėjome, yra tai, kad naudojame metodą Uždaryti (), tai, ką ji daro, yra uždaryti dabartinį ryšį ir išvalyti buferį taip, kad būtų optimizuotas serverio išteklių naudojimas.
SvarbuTurime turėti omenyje, kad jei turime sistemą, sukurtą senoje versijoje PHP ir mes neperimsime į naujas versijas, galbūt pakeisime ryšio eilutes į Duomenų bazė ir užklausų metodai gali būti netinkama idėja atliekamam darbui. Tačiau jei norime kurti naujas programas ir sistemas, geriausia pradėti nuo tvirto pagrindo naudojant šias naujas bibliotekas ir palaikant būsimas versijas. PHP.
Baigę šią mokymo programą pamatėme, kad naujos alternatyvos yra daug švaresnės ir saugesnės, o dėl jų naudojimo paprastumo jos tinka dabartiniam laikui.Ar jums patiko ir padėjo ši pamoka?Galite apdovanoti autorių paspausdami šį mygtuką, kad suteiktumėte jam teigiamą tašką