PHP is een open-source scripttaal voor algemene doeleinden, die veel wordt gebruikt voor het maken van dynamische en interactieve webpagina's. PHP heeft toegang tot een groot aantal relationele databasebeheersystemen, zoals MYSQL, SQLite , En PostgreSQL . De PHP 5.1 versie bood een nieuwe databaseverbindingsabstractiebibliotheek, dat wil zeggen PHP-gegevensobjecten (BOB).
Wat is BOB?
PDO verwijst naar PHP-gegevensobject , een PHP-extensie die een lichtgewicht en consistente interface definieert voor toegang tot een database in PHP. Het is een set PHP-extensies die een kern-PDO-klasse en een databasespecifieke driver bieden. Elk databasestuurprogramma kan databasespecifieke functies beschikbaar stellen als een reguliere uitbreidingsfunctie die de PDO-interface implementeert.
Opmerking: we kunnen geen enkele databasefunctie uitvoeren door de PDO-extensie zelf te gebruiken. Om toegang te krijgen tot een databaseserver moeten we een databasespecifiek PDO-stuurprogramma gebruiken.
PDO richt zich vooral op de abstractie van gegevenstoegang in plaats van op databaseabstractie. Het zorgt voor abstractielaag voor gegevenstoegang , wat betekent dat we, ongeacht welke database we gebruiken, dezelfde functies van die database moeten gebruiken om zoekopdrachten uit te voeren en gegevens op te halen. PDO biedt geen gegevensabstractie, omdat het de SQL niet herschrijft of ontbrekende functies emuleert.
Voordeel van BOB
PDO biedt verschillende manieren om met objecten te werken en haalt voorbereide instructies op die het werk veel gemakkelijker maken. Het is een databasetoegangstool in PHP waarmee we uniforme toegang tot meerdere databases mogelijk maken.
PDO maakt relatief naadloos schakelen tussen verschillende databases en platforms mogelijk, wat eenvoudig kan worden gedaan door de verbindingsreeks te wijzigen. Het ondersteunt geen databasespecifieke syntaxis.
Er zijn enkele voordelen van BOB:
De PDO-extensie heeft toegang tot elke database die is geschreven voor het PDO-stuurprogramma. Er zijn verschillende PDO-drivers beschikbaar die hiervoor worden gebruikt FreeTDS, Microsoft SQL Server, Sybase, IBM DB2, Oracle Call Interface, Firebird/Interbase 6 , En PostgreSQL databases, en nog veel meer.
De stuurprogramma's zijn niet automatisch in elk systeem beschikbaar, dus we moeten onze beschikbare stuurprogramma's vinden en deze toevoegen wanneer we ze nodig hebben.
Er zijn verschillende syntaxis beschikbaar om de databaseverbinding tot stand te brengen. Deze syntaxis is afhankelijk van specifieke databases. Bij het gebruik van PDO moeten bewerkingen worden verpakt in try/catch-blokken en moet gebruik worden gemaakt van de uitzonderingstechniek.
Normaal gesproken hoeft er slechts één enkele verbinding tot stand te worden gebracht, en deze verbindingen worden gesloten door de database zo te programmeren dat deze als nul wordt ingesteld.
PDO maakt het mogelijk uitzonderingen te gebruiken voor foutafhandeling. Om een uitzondering te produceren, kan PDO in een relevant foutmodusattribuut worden gedwongen.
Er zijn drie foutmodi, d.w.z. Stil (standaard), Waarschuwing , En Uitzondering . Waarschuwing en uitzondering zijn nuttiger bij DRY-programmering.
PDO reduceert de veelgebruikte bewerking van het invoegen en bijwerken van de database tot een proces van twee stappen, d.w.z.
Voorbereiden >> [Binden] >> Uitvoeren.
Via deze methode kunnen we optimaal profiteren van de door PDO voorbereide instructies, die bescherming bieden tegen kwaadaardige aanvallen via SQL-injectie.
Voorbereide instructies zijn vooraf samengestelde SQL-instructies die meerdere keren kunnen worden uitgevoerd door deze gegevens naar de server te verzenden. Deze gegevens, die binnen de tijdelijke aanduiding worden gebruikt, worden automatisch beschermd tegen de SQL-injectieaanval.
Voordelen van het gebruik van BOB
PDO is het native databasestuurprogramma. Er zijn enkele voordelen van het gebruik van BOB die hieronder worden gegeven:
BOB-klassen
Er zijn drie BOB-klassen, die hieronder worden weergegeven:
Databases ondersteund door BOB
- MySQL
- PostgreSQL
- Orakel
- Vuurvogel
- MS SQL-server
- Sybase
- Informix
- IBM
- GratisTDS
- SQLiet
- Cubrid
- 4D
Vergelijking tussen BOB en MySQLi
Om toegang te krijgen tot de database met behulp van PHP, hebben we hoofdzakelijk twee opties: MySQLi En BOB (PHP-gegevensobject). MySQLi is native voor PHP en biedt snellere prestaties, terwijl de meeste ervaren ontwikkelaars liever met PDO werken omdat het een grote verscheidenheid aan databasestuurprogramma's ondersteunt. Er zijn enkele verschillen tussen PDO en MySQLi die hieronder worden vermeld op basis van hun kenmerken.
Functies | BOB | MySQLi |
---|---|---|
DB-ondersteuning | 12 verschillende chauffeurs | Alleen MySQL |
Verbinding | Eenvoudig | Eenvoudig |
API | OPEN | OOP + Procedure |
Prestatie | Snel | Snel |
Genoemde parameter | Ja | Nee |
Objecttoewijzing | Ja | Ja |
Opgeslagen procedure | Ja | Ja |
Opgestelde verklaringen aan de klantzijde | Ja | Nee |
Beveiliging | Veiliger dan MySQLi. | Veilig maar niet meer dan BOB. |
Welke verdient de voorkeur tussen PDO of MySQLi?
Zowel PDO als MySQLi hebben hun eigen voordelen:
- Zoals we eerder hebben gezien, werkt PDO op 12 verschillende databasesystemen, terwijl MySQL alleen met de MySQL-database kan werken. Dus als we ons project naar een andere database willen overzetten, maakt PDO het gemakkelijk. In MySQLi moeten we de volledige code herschrijven.
- PDO en MySQLi zijn beide objectgeoriënteerd, maar MySQLi biedt ook procedurele API. Beide ondersteunen Opgestelde Verklaringen. Opgestelde verklaringen zijn belangrijk voor de beveiliging van webapplicaties, omdat ze beschermen tegen SQL-injectie.
Vereiste
Er zijn geen externe bibliotheken nodig om deze extensie te bouwen.
Installatieproces
Stap 1: Download hier de nieuwste XAMPP-server https://www.apachefriends.org/download.html voor verschillende platforms zoals Windows, Linux en MacOS.
Opmerking: hier bespreken we alleen het installatieproces voor Windows OS.
Stap 2: Installeer de XAMPP-server op uw systeem door deze stappen te volgen.
Stap 3: Selecteer de componenten die u wilt installeren en klik op de knop Volgende.
Stap 4: Maak de nieuwe map met de naam xampp op de locatie waar u XAMPP wilt installeren.
Stap 5: Klik hier op Volgende en ga verder. De installatie van de XAMPP-server begint vanaf hier.
Stap 6: XAMPP is succesvol geïnstalleerd. Klik op de knop Voltooien.
Stap 7: Selecteer de gewenste taal.
Stap 8: Voer vanaf hier de Apache-server en MySQL uit (volgens de gegeven schermafbeelding).
Stap 9: Open nu php.ini vanuit C:/xampp/php/php.ini (waar u uw XAMPP hebt geïnstalleerd) en verwijder de opmerkingen over de extensie 'php_pdo_mysql.dll' En 'php_pdo.dll' (als u met een MySQL-database werkt), of 'php_pdo_oci.dll' (als u met een Oracle-database werkt). Ga nu aan de slag met de database. In de hogere versie van PHP 5.1 is dit al ingesteld.
Werken met BOB
Eerst moeten we een database maken, dus maak vanaf hier een database met de naam myDB.
Databaseverbinding
Voor interactie met de database is altijd een databaseverbinding vereist. We moeten dus de identificatie kennen om toegang te krijgen tot de database, dat wil zeggen de locatie van de database, de databasenaam, de gebruikersnaam en het wachtwoord.
Maak nu het databaseverbindingsprogramma aan met behulp van PDO in een teksteditor zoals Kladblok of Kladblok++ en sla het op onder de naam coonection.php. Voer het uit op de XAMPP-server met localhost/80.
Voorbeeld
getMessage(); } ?>
Uitvoer
touwtje eraan
Voer het uit op de server met behulp van de volgende URL localhost/Xampp/pdoexample/connection.php/ of waar u uw programma heeft opgeslagen.
Verbindingsfout afhandelen
Er wordt een PDOException-object gegenereerd als er een verbindingsfout optreedt. We kunnen de uitzondering opvangen als we de foutconditie willen afhandelen, of we kunnen dit ook overlaten aan de globale uitzonderingshandler die kan worden ingesteld door set_exception_handler() functie.
Voorbeeld
In dit voorbeeld is dbUser(user-id) verkeerd, dus er wordt een uitzondering gegenereerd, zoals we in de uitvoer kunnen zien.
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); Echo 'Successfully connected with myDB database'; } catch(Exception $e){ Echo 'Connection failed' . $e->getMessage(); } ?>
De databaseverbinding sluiten
getMessage(); } // this command close the connection. $dbConn = null; ?>
Uitvoer