MySQLi - Een nieuwe manier van interactie tussen PHP en MySQL

  1. Inleiding
  2. Proceduraal vs. Object georienteerd
  3. Object georienteerde interface van mysqli
  4. Meerdere queries tegelijk uitvoeren
  5. Prepared statements
  6. Transacties met mysqli: commit() en rollback()
  7. Uitbreiden van de mysqli klasse
  8. Slotwoord en referenties
  9. Reacties op deze tutorial

Object georienteerde interface van mysqli

Op de vorige pagina heb ik al een kleine inleiding gegeven in het gebruik van de object georienteerde interface van de mysqli extensie. Hier zal ik nog enkele voorbeelden geven van veel voorkomende queries geven om de manier waarop een query uitgevoerd wordt te verduidelijken.

Voorbeeld 5: Een INSERT query
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
$mysqli 
= new mysqli('host''user''password''database');
if(
mysqli_connect_errno())
{
    
trigger_error('Fout bij verbinding: '.$mysqli->error);
}

// Controleren en beveiligen van variabelen
$naam $mysqli->real_escape_string($_POST['naam'])

$sql "
    INSERT INTO tabel (
        naam,
        datum )
    VALUES (
        '"
.$naam."',
        NOW() 
    )"
;

if(!
$result $mysqli->query($sql))
{
    
trigger_error('Fout in query: '.$mysqli->error);
}
else
{
    echo 
'Het invoegen is gelukt.';
}    
?>

Dit scriptje is ongeveer hetzelfde als dat op de vorige pagina. Nu weten we natuurlijk dat we input van een gebruiker altijd moeten beveiligen en vroeger gebruikten we dan ook de functie mysql_real_escape_string() voor dat doeleinde. Nu kunnen we daar de real_escape_string() methode van het $mysqli object voor gebruiken.

Het uitvoeren van de query gaat op precies dezelfde manier als op de vorige pagina.

Voorbeeld 6: Een UPDATE query
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
$mysqli 
= new mysqli('host''user''password''database');
if(
mysqli_connect_errno())
{
    
trigger_error('Fout bij verbinding: '.$mysqli->error);
}

// Controleren en beveiligen van variabelen
$naam $mysqli->real_escape_string($_POST['naam'])

$sql "
    UPDATE tabel
    SET naam = '"
.$naam."'
    WHERE id = 10
    "
;

if(!
$result $mysqli->query($sql))
{
    
trigger_error('Fout in query: '.$mysqli->error);
}
else
{
    if(
$mysqli->affected_rows 0)
    {
        echo 
'Het updaten is gelukt';
    }
}    
?>

Ook het uitvoeren van een UPDATE query doe je op precies dezelfde manier. Nu weten we dat we na een UPDATE of DELETE query altijd moeten controleren of er wel iets in de database veranderd is. Waar we vroeger mysql_affected_rows() gebruiken kunnen we nu de affected_rows eigenschap van het $mysqli object gebruiken. Deze eigenschap hoort bij het $mysqli object omdat het een eigenschap van een verbinding is.

Dit in tegenstelling tot de num_rows eigenschap dat een eigenschap van het mysqli_result object, aangeduid met $result, is. Immers het aantal rijen in een result set, is een eigenschap van die result set.

Op deze manier kun je allerlei soorten queries uitvoeren, resultaten fetchen en gegevens controleren. In dit opzicht is er niet veel veranderd ten opzichte van de mysql extensie.

Vorige Volgende