Regnery.net Internet

HTML CSS PHP MYSQL JQuery SEO – internetoplossingen

mysqli tutorial

De oude extensie mysql gaat binnenkort verdwijnen, als je de berichten moet geloven. Maar daarvoor in de plaats is de mysqli extensie teruggekomen. Dit is een snellere en betere manier om een verbinding te maken met MySQL. De mysqli extensie heeft twee manieren om met de database te communiceren, namelijk via een procedurele manier en via een object geörienteerde manier. In deze mysqli tutorial tref je de basis om om in je verdere PHP leven vooruit te kunnen.

mysqli_tutorial verbinding leggen

 <?php
// procedureel verbinden methode 01
$db = mysqli_connect(‘host’, ‘username’, ‘password’);
mysqli_select_db($db, ‘databasenaam’);

// procedureel verbinden methode 02
$db = mysqli_connect(‘host’, ‘username’, ‘password’, ‘database’);

if(mysqli_connect_errno()) {
die(mysqli_connect_error()); }

// object geörienteerd verbinden
$db = new mysqli(‘host’, ‘user’, ‘password’, ‘db’);

if($db->connect_errno) {
die($db->connect_error); }

?>

Procedureel: je legt de verbinding via mysqli_connect() functie. Je selecteert de juiste database via mysqli_select_db() functie. Afhankelijk van hoe jij het prettig vindt, gebruik je methode 1 of methode 2.

Object: als je OOP waardeert, dan raad ik je aan deze methode aan te leren. Je activeert deze variant altijd door eerst een nieuw object aan te maken via de opdracht $variabelenaam = new mysqli(host, username, password, database).

Als je gewend was aan de oude methode van mysql dan hoeft de overstap niet al te moeilijk te zijn. In basis werk je op dezelfde wijze. Alleen heb je via mysqli veel meer opties tot je beschikking, waar je later de vruchten van gaat plukken.

Ter lering en vermaak staat de functie mysqli_connect_error() in het voorbeeld. Gedurende de ontwikkelingsfase van je site kun je dit zo laten staan. Het is beter om zelf foutmeldingen te maken, zodat je in geval van problemen met de verbinding geen kostbare informatie weggeeft aan bezoekers.

Interactie met de database

Hierna tref je een voorbeeld aan van een script om data te verwerken in de database via een mysqli  verbinding.

 <?php
$naam = “‘s-Hertogenbosch”;
$clean = array();

// procedureel

$clean['naam'] = mysqli_real_escape_string($db, $naam);

mysqli_query($db, “INSERT INTO table
VALUES (NULL, ‘{$clean['naam']}’)”);

// objectgeörienteerd

$clean['naam'] = $db->real_escape_string($naam);

$db->query(“INSERT INTO table
VALUES (NULL, ‘{$clean['naam']}’)”);

?>

Het grote verschil met de procedurele wijze van mysqli en de oude mysql methode is de verplichting om bij het gebruik van mysqli_functies voor het communiceren met de database steeds als eerste parameter de database verbinding $db mee te geven. Bij mysql was dit optioneel en kon dit alleen als laatste parameter. Dus bij SELECT, INSERT, UPDATE en DELETE moet je steeds aangeven via de $db om welke verbinding het gaat.

Bij de object methode van mysqli hoef je niet steeds de $db verbinding op te nemen, dit zit reeds opgesloten in het systeem van het object van mysqli.

In het vervolg van deze cursus zal ik verder gaan met de object geörienteerde wijze van mysqli. Via eigenschappen van het object kun je veel sneller werken met handige database functies.

Heb je nog weinig kennis van object georienteerd porgrammeren ofwel OOP, kijk dan eens naar deze tutorial OOP PHP.

Nog even ter herinnering, wil je een methode aanroepen van een object dan schrijf je $obj->methode() en wil je een eigenschap van een object opvragen, dan schrijf je $obj->eigenschap.

INSERT opdracht via mysqli object.

Hierna staat een voorbeeld script om data in te voeren in een database.

<?php

//openen verbinding

$db = new mysqli(‘host’, ‘username’, ‘password’, ‘database’);

// check variabelen

$naam = $db->real_escape_string($_POST['plaatsnaam']);

// SQL statement opnemen

$sql = “INSERT INTO tabel (naam) VALUES ‘”.$naam.”‘)”;

if(!$result = $db->query($sql)) {

header(‘location:index.php’);

} else {

header(‘location:succes.php’);

}

?>

De beveiliging van de input van de bezoeker vindt nu ook plaats via de functie mysqli_real_escape_string() functie. Maar omdat je werkt met een mysqli object, heb je deze functie als methode van het mysqli object tot je beschikking.

Het commando INSERT vindt plaats via de regel $db->query($sql); in het script. Op deze wijze roep je de methode van query aan van het obejct de database verbinding.

Wil je in plaats van INSERT een UPDATE of DELETE commando uitvoeren, dan zul je de $sql moeten aanpassen. En aan het eind van je script check je altijd of er wel iets is veranderd in de database via de eigenschap ($mysqli->affected_rows > 0). Voor het overige blijft het script gelijk.

Dit is de basis voor je mysqli carriere. Je kunt de opgedane kennis nog verder verbreden en dat gaan wij ook doen. Tot de volgende cursus….