PHP -zelfstudie

PHP HOME PHP-intro PHP-installatie PHP-syntaxis PHP-opmerkingen PHP-variabelen PHP-echo / afdrukken PHP-gegevenstypen PHP-strings PHP-nummers PHP-wiskunde PHP-constanten PHP-operators PHP Als...Anders...Anders PHP-switch PHP-loops PHP-functies PHP-arrays PHP Superglobals PHP RegEx

PHP- formulieren

PHP-formulierverwerking PHP-formuliervalidatie PHP-formulier vereist URL/e-mail van PHP-formulier PHP-formulier voltooid

PHP Geavanceerd

PHP-datum en tijd PHP opnemen PHP-bestandsverwerking PHP-bestand openen/lezen PHP-bestand maken/schrijven PHP-bestand uploaden PHP-cookies PHP-sessies PHP-filters PHP-filters geavanceerd PHP-callback-functies PHP JSON PHP-uitzonderingen

PHP OOP

PHP Wat is OOP PHP-klassen/objecten PHP-constructor PHP-vernietiger PHP-toegangsmodificaties PHP-overerving PHP-constanten PHP abstracte lessen PHP-interfaces PHP-kenmerken PHP statische methoden Statische eigenschappen van PHP PHP-naamruimten PHP-iterables

MySQL- database

MySQL-database MySQL Connect MySQL DB maken MySQL-tabel maken MySQL Gegevens invoegen MySQL Laatste ID ophalen MySQL Meerdere invoegen MySQL voorbereid MySQL Gegevens selecteren MySQL Waar MySQL Bestel op MySQL Gegevens verwijderen MySQL-updategegevens MySQL-limietgegevens

PHP XML

PHP XML-parsers PHP SimpleXML-parser PHP SimpleXML - Get PHP XML Expat PHP XML DOM

PHP - AJAX

Ajax-intro AJAX PHP AJAX-database AJAX XML Live zoeken in Ajax Ajax-peiling

PHP- voorbeelden

PHP-voorbeelden PHP-compiler PHP-quiz PHP-oefeningen PHP-certificaat

PHP- referentie

PHP-overzicht PHP-array PHP-agenda PHP-datum PHP-map PHP-fout PHP-uitzondering PHP-bestandssysteem PHP-filter PHP FTP PHP JSON PHP-sleutelwoorden PHP Libxml PHP-e-mail PHP-wiskunde PHP Diversen PHP MySQLi PHP-netwerk PHP-uitvoercontrole PHP RegEx PHP SimpleXML PHP-stream PHP-string Beheer van PHP-variabelen PHP XML-parser PHP-zip PHP-tijdzones

PHP Verbinden met MySQL


PHP 5 en hoger kunnen werken met een MySQL-database met behulp van:

  • MySQLi-extensie (de "i" staat voor verbeterd)
  • BOB (PHP-gegevensobjecten)

Eerdere versies van PHP gebruikten de MySQL-extensie. Deze extensie werd echter in 2012 stopgezet.


Moet ik MySQLi of PDO gebruiken?

Als je een kort antwoord nodig hebt, is het "Wat je maar wilt".

Zowel MySQLi als PDO hebben hun voordelen:

PDO werkt op 12 verschillende databasesystemen, terwijl MySQLi alleen werkt met MySQL-databases.

Dus als u uw project moet wijzigen om een ​​andere database te gebruiken, maakt PDO het proces eenvoudig. U hoeft alleen de verbindingsreeks en een paar query's te wijzigen. Met MySQLi moet u de volledige code herschrijven, inclusief query's.

Beide zijn objectgeoriënteerd, maar MySQLi biedt ook een procedurele API.

Beide ondersteunen voorbereide verklaringen. Voorbereide verklaringen beschermen tegen SQL-injectie en zijn erg belangrijk voor de beveiliging van webtoepassingen.


MySQL-voorbeelden in zowel MySQLi- als PDO-syntaxis

In dit, en in de volgende hoofdstukken demonstreren we drie manieren om met PHP en MySQL te werken:

  • MySQLi (objectgeoriënteerd)
  • MySQLi (procedureel)
  • BOB

MySQLi-installatie

Voor Linux en Windows: De MySQLi-extensie wordt in de meeste gevallen automatisch geïnstalleerd wanneer het php5 mysql-pakket is geïnstalleerd.

Ga voor installatiedetails naar: http://php.net/manual/en/mysqli.installation.php


BOB-installatie

Ga voor installatiedetails naar: http://php.net/manual/en/pdo.installation.php



Open een verbinding met MySQL

Voordat we toegang hebben tot gegevens in de MySQL-database, moeten we verbinding kunnen maken met de server:

Voorbeeld (MySQLi objectgeoriënteerd)

<?php
$servername = "localhost";
$username = "username";
$password = "password";

// Create connection
$conn = new mysqli($servername, $username, $password);

// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>

Opmerking over het objectgeoriënteerde voorbeeld hierboven:

$connect_error was verbroken tot PHP 5.2.9 en 5.3.0. Als u compatibiliteit met PHP-versies ouder dan 5.2.9 en 5.3.0 wilt garanderen, gebruikt u in plaats daarvan de volgende code:

// Controleer verbinding
if (mysqli_connect_error()) {
  die("Database-verbinding mislukt: " . mysqli_connect_error());
}

Voorbeeld (MySQLi procedureel)

<?php
$servername = "localhost";
$username = "username";
$password = "password";

// Create connection
$conn = mysqli_connect($servername, $username, $password);

// Check connection
if (!$conn) {
  die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>

Voorbeeld (BOB)

<?php
$servername = "localhost";
$username = "username";
$password = "password";

try {
  $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
  // set the PDO error mode to exception
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  echo "Connected successfully";
} catch(PDOException $e) {
  echo "Connection failed: " . $e->getMessage();
}
?>

Opmerking: in het bovenstaande PDO-voorbeeld hebben we ook een database (myDB) gespecificeerd . Voor PDO is een geldige database vereist om verbinding mee te maken. Als er geen database is opgegeven, wordt een uitzondering gegenereerd.

Tip: Een groot voordeel van PDO is dat het een uitzonderingsklasse heeft om eventuele problemen in onze databasequery's op te lossen. Als er een uitzondering wordt gegenereerd binnen het blok try{ }, stopt het script met uitvoeren en stroomt het rechtstreeks naar het eerste blok catch(){}.


Sluit de verbinding

De verbinding wordt automatisch gesloten wanneer het script eindigt. Gebruik het volgende om de verbinding eerder te sluiten:

MySQLi object-georiënteerd:

$conn->close();

MySQLi-procedure:

mysqli_close($conn);

BOB:

$conn = null;