PHP Koppel aan MySQL
PHP 5 en later kan met 'n MySQL-databasis werk deur:
- MySQLi-uitbreiding (die "i" staan vir verbeterde)
- PDO (PHP Data Objects)
Vroeër weergawes van PHP het die MySQL-uitbreiding gebruik. Hierdie uitbreiding is egter in 2012 opgeskort.
Moet ek MySQLi of PDO gebruik?
As jy 'n kort antwoord nodig het, sal dit wees "Wat ook al jy wil".
Beide MySQLi en PDO het hul voordele:
PDO sal op 12 verskillende databasisstelsels werk, terwyl MySQLi net met MySQL-databasisse sal werk.
Dus, as jy jou projek moet verander om 'n ander databasis te gebruik, maak PDO die proses maklik. Jy hoef net die verbindingstring en 'n paar navrae te verander. Met MySQLi sal jy die hele kode moet herskryf - navrae ingesluit.
Albei is objekgeoriënteerd, maar MySQLi bied ook 'n prosedurele API.
Albei ondersteun Voorbereide Stellings. Voorbereide stellings beskerm teen SQL-inspuiting, en is baie belangrik vir webtoepassingsekuriteit.
MySQL-voorbeelde in beide MySQLi- en PDO-sintaksis
Hierin en in die volgende hoofstukke demonstreer ons drie maniere om met PHP en MySQL te werk:
- MySQLi (objekgeoriënteerd)
- MySQLi (prosedurele)
- BOB
MySQLi installasie
Vir Linux en Windows: Die MySQLi-uitbreiding word in die meeste gevalle outomaties geïnstalleer wanneer php5 mysql-pakket geïnstalleer is.
Vir installasie besonderhede, gaan na: http://php.net/manual/en/mysqli.installation.php
PDO installasie
Vir installasiebesonderhede, gaan na: http://php.net/manual/en/pdo.installation.php
Maak 'n verbinding met MySQL oop
Voordat ons toegang tot data in die MySQL-databasis kan kry, moet ons aan die bediener kan koppel:
Voorbeeld (MySQLi objekgeorië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";
?>
Let op die objekgeoriënteerde voorbeeld hierbo:
$connect_error was gebreek tot PHP 5.2.9 en 5.3.0. As jy versoenbaarheid met PHP-weergawes voor 5.2.9 en 5.3.0 moet verseker, gebruik eerder die volgende kode:
// Check connection
if (mysqli_connect_error()) {
die("Databasisverbinding het misluk: " . mysqli_connect_error());
}
Voorbeeld (MySQLi-prosedure)
<?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();
}
?>
Let wel: In die PDO-voorbeeld hierbo het ons ook 'n databasis (myDB) gespesifiseer . PDO vereis 'n geldige databasis om aan te koppel. As geen databasis gespesifiseer is nie, word 'n uitsondering gegooi.
Wenk: 'n Groot voordeel van PDO is dat dit 'n uitsonderingsklas het om enige probleme wat in ons databasisnavrae mag voorkom, te hanteer. As 'n uitsondering binne die try{ }-blok gegooi word, stop die skrip om uit te voer en vloei direk na die eerste catch(){ }-blok.
Sluit die verbinding
Die verbinding sal outomaties gesluit word wanneer die skrif eindig. Om die verbinding voor te sluit, gebruik die volgende:
MySQLi objekgeoriënteerd:
$conn->close();
MySQLi-prosedure:
mysqli_close($conn);
BOB:
$conn = null;