Mūsdienīgi un droši savienojumi ar datu bāzēm, izmantojot PHP

Satura rādītājs
Ja ir kaut kas, kas var sabojāt lietojumprogrammu, tad, kad mēs neizmantojam atbilstošos resursus, lai padarītu to ātrāku un drošāku, ir daudz veidu, kā uzlabot lietojumprogrammu ātrumu un drošību, tas var būt, izmantojot labākus attīstības modeļus, piemērojot lielāku drošību serveros utt.
Tomēr ir vieta, kur daudzas reizes mēs neapstājamies domāt, un tas ir, ja rīks, ko valoda mums dod, ir vislabākais mūsu darbam. Tas notiek daudz iekšā PHP Neskatoties uz to, ka daudzus gadus pastāv brīdinājums neizmantot šo funkciju mysql_connect () lai izveidotu saites uz Datu bāzes, daudzi izstrādātāji, šķiet, neapzinās lielo kļūdu, ko viņi pieļauj, to lietojot.
PHP ir vietējais atbalsts lielam skaitam motoru Datu bāzes kas pastāv tirgū, tomēr tā integrācija ar MySQL tas ir gandrīz obligāts sākumpunkts lielākajai daļai lietotāju.
mysql_connect ()No versijas 5.5 no PHP klasiskā funkcija mysql_connect () ir stāvoklī novecojis, tas ir, tas ir novecojis, un ir ļoti ieteicams to neizmantot, jo tas netiks iekļauts turpmākajās valodas versijās.
Alternatīva savienojuma izveidei iet caur diviem elementiem, pirmkārt, savienojumu izveidošanai izmantot vienu un to pašu valodas struktūru vai izveidot savienojumu ar jauno bibliotēku MySQL. Šeit var rasties pirmais jautājums, kāpēc tikai domāt MySQL? Atbilde ir vienkārša, tas ir sākums, tā ir vienkāršākā un visnoderīgākā lieta, ko mēs varam izskaidrot sākotnēji, ja mēs zinām šo bāzi, mēs varam to ekstrapolēt citiem dzinējiem un vadītājiem.
Pirmā savienojuma alternatīva Datu bāze ir izmantot pašas valodas datu objektu, ko sauc PHP datu objekts vai tā saīsinājums ACVN. Tas ir nekas vairāk kā liels rakstisks paplašinājums valodā C kas ļauj mums izveidot savienojumus ar dažāda veida motoriem Datu bāzes un ka tai ir standarta metodes, kas dod mums iespēju rakstīt starpplatformu lietojumprogrammas, tas ir, mums nav jāmaina sintakse, ja mainām datu bāzes dzinēju.
Sākumā mēs teicām, ka koncentrēsimies uz MySQLTomēr, ja mēs izveidojam savienojumu, izmantojot ACVN ko mēs darām, mēs varam attiecināt uz citiem dzinējiem. Šim nolūkam mums tikai jāaktivizē vai jāiekļauj minēto dzinēju draiveri un jāaktivizē tie failā php.ini no servera.
Lai izveidotu savienojumu ar a Datu bāze mums vienkārši jāizveido saite, izmantojot tai piemērotu metodi ACVN savienojums tiek panākts ar trim pamatparametriem - datu bāzes servera nosaukumu, lietotājvārdu un tā paroli.
Vienīgais šo trīs parametru skaidrojums ir datu bāzes servera parametrs, agrāk mums bija jāizvēlas Datu bāze Izmantojot īpašu funkciju pēc savienojuma izveidošanas, šajā gadījumā mēs to darīsim vienā virknē, tāpēc mūsu servera nosaukuma virkne izskatīsies šādi:
mysql: resursdators = resursdatora nosaukums; dbname = dbname

Mēs redzam, ka šajā gadījumā mēs sākotnēji norādām motoru mysql tad ar resursdatoru mēs jums pateiksim, kurš ir serveris, šeit tas var būt IP vai vietējais saimnieks ja serveris ir lokāls, beidzot ar dbname mēs nododam tās datu bāzes nosaukumu, ar kuru vēlamies izveidot savienojumu. Nākamajā attēlā mēs novērosim, kā kodam izveidot savienojumu, izmantojot ACVN:

PALIELINĀT

Tā kā mēs zinām sākotnējo soli, kā izveidot savienojumu, tagad mums ir jāapgūst, kā mēs varam izpildīt vaicājumus, parasti agrāk mēs tieši izpildījām vaicājumu ar tā parametriem, šī prakse nav droša, jo tā padara mūs nosliece uz tipa uzbrukumiem SQL injekcija, ACVN ļauj mums izmantot t.s Sagatavoti stamenti kas ir nekas vairāk kā vaicājuma izpilde parametrētā veidā, tāpēc pati bibliotēka veic atkļūdošanas darbu un ir mazāk pakļauta uzbrukumiem. Tālāk redzēsim, kā izpildīt vienkāršu vaicājumu un pēc tam tā ekvivalentu ar Sagatavots Stament.
Šajā vienkāršajā vaicājumā mēs pieņemsim, ka mums ir tabula Datu bāze zvanīt Autors kas saņem autora kodu un pēc tam tā nosaukumu, protams, tas nav uzskatāms piemērs, tas nav labas tabulas piemērs, mūs interesē tikai zināt, kā savienojums darbojas no ACVN.
Attēlā mēs redzam, ka mēs saucam metodi ar nosaukumu vaicājums () no objekta, kas izveidots ar ACVN savienojuma virkni, tad mēs rakstām savu vaicājumu bez lielām problēmām:

PALIELINĀT

Problēma ir tā, ka mēs tieši saņemam vērtības, tāpēc nav iespējas to uzlabot un atkārtoti izmantot, tā vietā, ja mēs veicam a Sagatavots Stament, mēs redzēsim, ka vispirms mēs norādām, kurš vaicājums jāizpilda, tad ar citu metodi mēs to padarām efektīvu un nododam tam nepieciešamās vērtības. Tādējādi tiek aktivizēts parametru atkļūdošanas dzinējs. ACVN tādējādi nodrošinot papildu aizsardzības līmeni. Tālāk redzamajā attēlā redzēsim, kā izskatītos iepriekšējais piemērs Sagatavoti stamenti tagad.

PALIELINĀT

No pirmā acu uzmetiena tas var šķist nedaudz sarežģīts un ne optimāls, taču, analizējot, mēs redzam, ka vispirms mēs izveidojam izpildāmo vaicājumu, pēc tam izveidojam masīvu ar parametriem, kurus saņems mūsu vaicājums, piemēram, saņemt autora kodu un tā vārdu, beidzot mēs izpildām vaicājumu un nododam tam parametru masīvu.
Ja mēs vēlamies konsultēties, kad mēs jau esam ievietojuši dažas vērtības Datu bāze tas ir ļoti vienkārši, mums tas jādara tikai ar vaicājumu SELECT, tas ļaus mums ievest ierakstus, agrāk mēs bijām atkarīgi no tādām funkcijām kā mysql_fetch_array () vai mysql_fetch_assoc () kas pēc patēriņa mūs atkal nespēja pārvaldīt.
Ar ACVN Mēs iegūsim datus tieši no objekta, tāpēc mums tie vienmēr būs pieejami izpildes laikā. Tālāk redzamajā piemērā redzēsim, kā tas tiktu darīts:

Mēs redzam, kā mēs sākotnēji veidojam a Sagatavots Stament, mēs šajā gadījumā veicam vienkāršu vaicājumu un pēc tam ar cilpu kamēr () mēs iegūsim katru ierakstu un izdrukāsim to, ja pamanīsim, ka uz to neatsaucamies MySQL jebkurā mūsu koda vietā, tādēļ, ja mēs mainām savienojuma virkni un izmantojam citu dzinēju, kuram ir tabula un a Datu bāze ar tādu pašu nosaukumu un struktūru, mēs varēsim iegūt jūsu datus, nemainot kodu.
Kas MySQL ir populārākais datu bāzes dzinējs, ar ko integrēties PHP, ir arī alternatīva, un tā ir MySQLi kas ir nekas vairāk kā uz objektu orientēts interfeiss. Tās darbības veids ir ļoti līdzīgs tam ACVNTomēr mainās tas, ka tas ir paredzēts tikai šim populārajam datu bāzes dzinējam, tāpēc pārrobežu platformu pārveidošana nebūtu iespējama.
Tās savienojuma virkne ir nedaudz mazāk sarežģīta, jo tā sadala servera nosaukumu saimniekdatorā un izmantojamo datu bāzi divos dažādos parametros, papildus lietotāja vārdam un parolei, redzēsim, kā tas izskatās:
$ objConex = jauns mysqli (resursdatora nosaukums, lietotājs, parole, datu bāzes nosaukums);

Apskatīsim nākamajā piemērā, kā mēs izveidojam savienojumu, izmantojot MySQLi un kā mēs varam veikt vienkāršu datu ievietošanu:

PALIELINĀT

Mēs atzīmējam, ka pastāv līdzība ar ACVN izmantojot metodi vaicājums () arī, taču tas darbosies tikai MySQL.
Tagad mēs saņemsim un atkārtosim datus, kurus varam iegūt no vaicājuma, tāpēc mēs izmantosim to pašu metodi vaicājums () un tad metode fetch_assoc () lai iegūtu rezultātus:

Interesantākais, ko ievērojām, ir tas, ka mēs izmantojam šo metodi aizvērt (), tas slēdz pašreizējo savienojumu un notīra buferi tā, lai optimizētu servera resursu izmantošanu.
SvarīgsMums jāpatur prātā, ka, ja mums ir sistēma, kas izveidota vecā versijā PHP un mēs nemigrēsim uz jaunām versijām, varbūt mainīsim savienojuma virknes uz Datu bāze un vaicājumu metodes var nebūt laba ideja par darbu, ko tas pārstāv. Tomēr, ja mēs vēlamies izveidot jaunas lietojumprogrammas un sistēmas, vislabāk ir sākt ar stabilu pamatu, izmantojot šīs jaunās bibliotēkas ar atbalstu turpmākajās versijās PHP.
Pabeidzot šo apmācību, mēs esam redzējuši, ka jaunās alternatīvas ir daudz tīrākas un drošākas, un to izmantošanas vieglums padara tās piemērotas pašreizējam laikam.Vai jums patika šī apmācība un palīdzējāt tai?Jūs varat apbalvot autoru, nospiežot šo pogu, lai sniegtu viņam pozitīvu punktu

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave