Moderna och säkra anslutningar till databaser med PHP

Innehållsförteckning
Om det är något som kan skada en applikation, är det när vi inte använder tillräckliga resurser för att göra det snabbare och säkrare, det finns många sätt att förbättra applikationshastigheten och säkerheten, det kan vara genom att använda bättre utvecklingsmönster, tillämpa större säkerhet på servrarna etc.
Det finns dock en punkt där vi många gånger inte stannar upp för att tänka och det är om verktyget som språket ger oss är det bästa för det arbete vi utför. Detta händer mycket i PHP Trots att det under många år har varit en varning om att inte använda funktionen mysql_connect () att etablera länkar till Databaser, verkar många utvecklare inte inse det stora misstaget de gör när de använder det.
PHP har stöd för ett stort antal motorer Databaser som finns på marknaden, men dess integration med MySQL det är nästan en obligatorisk utgångspunkt för de flesta användare.
mysql_connect ()Från version 5.5 av PHP klassisk funktion mysql_connect () är i tillstånd föråldrad, det vill säga det är föråldrat och det rekommenderas starkt att inte använda det eftersom det inte kommer att inkluderas i framtida versioner av språket.
Alternativet att göra anslutningen går igenom två element, det första är att använda samma språkstruktur för att skapa anslutningar eller att använda det nya biblioteket för att ansluta till MySQL. Här kan komma den första frågan, varför bara tänka på MySQL? Svaret är enkelt, det är en början, det är det enklaste och mest användbara som vi kan förklara inledningsvis, om vi känner till denna bas kan vi extrapolera till andra motorer och förare.
Det första alternativet för anslutning till Databas är att använda språkets eget dataobjekt som kallas PHP Data Object eller dess förkortning PDO. Detta är inget annat än en stor skriftlig förlängning på språket C som gör att vi kan upprätta förbindelser med olika typer av motorer Databaser och att den har standardmetoder som ger oss möjlighet att skriva plattformsoberoende applikationer, det vill säga att vi inte behöver ändra syntaxen om vi ändrar databasmotorn.
Först sa vi att vi skulle fokusera på MySQLdock om vi upprättar en anslutning genom PDO vad vi gör kan vi tillämpa på andra motorer. För detta behöver vi bara aktivera eller införliva drivrutinerna för nämnda motorer och aktivera dem i filen php.ini från servern.
För att ansluta till en Databas vi måste bara etablera länken med hjälp av lämplig metod för den, i PDO anslutningen uppnås med tre grundläggande parametrar, namnet på databasservern, användarnamnet och dess lösenord.
Den enda parametern för dessa tre som behöver förklaras är databaseservern, tidigare var vi tvungna att välja Databas Genom en specifik funktion efter att ha upprättat anslutningen kommer vi i det här fallet att göra det i samma sträng, så servernamnsträngen ser ut så här:
mysql: värd = värdnamn; dbnamn = dbnamn

Vi ser att vi initialt specificerar motorn, i det här fallet mysql sedan med värd ska vi berätta vilken som är servern, här kan det vara en IP eller lokal värd om servern är lokal, slutligen med dbnamn vi skickar namnet på databasen som vi vill ansluta till. Vi kommer att observera i följande bild hur en kod ska anslutas med PDO:

FÖRSTORA

Eftersom vi känner till det första steget som är hur man ansluter, nu måste vi lära oss hur vi kan utföra frågor, vanligtvis tidigare använde vi direkt för att utföra frågan med dess parametrar, den här praxisen är inte alls säker eftersom den gör oss benägna att attacker av den typen SQL -injektion, PDO tillåter oss att använda den så kallade Förberedda stammar vilket inte är annat än att köra frågan på ett parametrerat sätt, så biblioteket själv gör ett felsökningsjobb och är mindre benäget för attacker. Låt oss se hur vi utför en enkel fråga och sedan dess motsvarighet med Förberedd Stament.
I denna enkla fråga antar vi att vi har en tabell i vår Databas ringa upp Författare som tar emot en författarkod och sedan dess namn, naturligtvis demonstrativt är det inte ett exempel på en bra tabell, vi är bara intresserade av att veta hur anslutningen fungerar från PDO.
På bilden ser vi att vi kallar en metod som kallas fråga () från objektet som skapats med PDO -anslutningssträngen, skriver vi vår fråga utan större problem:

FÖRSTORA

Problemet är att vi tar emot värdena direkt, så det finns inget sätt att förbättra och återanvända detta, istället om vi gör en Förberedd Stament, kommer vi att se att vi först anger vilken fråga som ska utföras, sedan med en annan metod gör vi den effektiv och skickar de nödvändiga värdena till den. Detta ger parameterfelsökningsmotorn till spel. PDO vilket ger en ytterligare skyddsnivå. Låt oss se i följande bild hur det föregående exemplet skulle se ut med användning Förberedda stammar nu.

FÖRSTORA

Vid första anblicken kan det verka något komplext och inte optimalt, men om vi analyserar ser vi att först fastställer vi frågan som ska köras, sedan skapar vi en array med parametrarna som vår fråga kommer att få, i exemplet vi ta emot författarens kod och dess namn, slutligen kör vi frågan och skickar den till parametern.
Om vi ​​vill konsultera när vi redan har infogat några värden i vår Databas det är väldigt enkelt, vi måste bara göra det med en fråga VÄLJ, detta gör att vi kan ta med posterna, tidigare var vi beroende av funktioner som t.ex. mysql_fetch_array () eller mysql_fetch_assoc () som en gång konsumerade gjorde att vi inte kunde hantera resultaten igen.
Med PDO Vi kommer att hämta data direkt från objektet, så vi kommer alltid att ha det tillgängligt under körningen, låt oss se i följande exempel hur det skulle göras:

Vi ser hur vi inledningsvis gör en Förberedd Stament, vi gör en enkel fråga i det här fallet och sedan med en loop medan () vi kommer att skaffa var och en av posterna och skriva ut dem, om vi märker att vi inte hänvisar till MySQL var som helst i vår kod, så om vi ändrar anslutningssträngen och använder en annan motor som har en tabell och en Databas med samma namn och struktur kommer vi att kunna få dina uppgif.webpter utan att behöva ändra vår kod.
Vad MySQL är den mest populära databasmotorn att integrera med PHP, det finns också ett alternativ och det är det MySQLi vilket inte är annat än ett objektorienterat gränssnitt. Dess arbetssätt liknar mycket det PDOVad som dock ändras är att det bara är för den här populära databasmotorn, så en plattformskonvertering skulle inte vara möjlig.
Dess anslutningssträng är lite mindre komplex eftersom den delar namnet på servern i värden och databasen som ska användas i två olika parametrar, förutom användarens namn och lösenord, låt oss se hur det ser ut:
$ objConex = nytt mysqli (värdnamn, användare, lösenord, databasnamn);

Låt oss se i följande exempel hur vi upprättar en anslutning med MySQLi och hur vi kan utföra en enkel datainsats:

FÖRSTORA

Vi noterar att det finns en likhet med PDO genom att ha en metod fråga () också, men detta kommer bara att fungera för MySQL.
Nu ska vi ta emot och iterera över data som vi kan få från en fråga, för detta kommer vi att använda samma metod fråga () och sedan metoden fetch_assoc () för att få resultaten:

Det mest intressanta vi märkte är att vi använder metoden stänga (), det här gör det att stänga den nuvarande anslutningen och rengöra bufferten på ett sådant sätt att användningen av serverresurser optimeras.
ViktigVi måste komma ihåg att om vi har ett system tillverkat i en gammal version av PHP och vi kommer inte att migrera till nya versioner, kanske ändra anslutningssträngarna till Databas och frågemetoder kanske inte är en bra idé för det arbete det representerar. Men om vi vill skapa nya applikationer och system är det bäst att börja med en solid grund med dessa nya bibliotek med stöd i framtida versioner av PHP.
Med detta avslutar vi denna handledning, vi har sett att de nya alternativen är mycket renare och säkrare, och deras användarvänlighet gör dem lämpliga för nuvarande tider.Gillade du och hjälpte denna handledning?Du kan belöna författaren genom att trycka på den här knappen för att ge honom en positiv poäng
wave wave wave wave wave