Nu goed, STMT

Willen we nu meer dan één rij toevoegen dan komen we uit bij STMT of te wel prepared statements.

Hoe werkt dit?
We leggen eerst aan de MySQL server een query voor die dient als de basis. Hierin zijn de waardes vervangen door vraagtekens (?). De MySQL server geeft als de tabel en veldnamen bestaan groen licht voor de query en we kunnen razendsnel tientalle records toevoegen. Het zelfde kan met update en delete en zelfs met select.

Stap voor stap, uitleg in de code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
29
<?php
    // Start een STMT
    $stmt = mysqli_stmt_init($connectie);
    // Laat de server het voorbeeld controleren
    if (mysqli_stmt_prepare($stmt, "INSERT INTO tabel (veld1, veld2) VALUES (?,?)"))
    {

        // Het sjabloon is goedgekeurd
        // Geef eerst de STMT gevolg door de types van de ? velden (s=string)
        // Geef in dezelfde volgorde als de ? de variabelen waar de waarde in voor komen.

        mysqli_stmt_bind_param($stmt, "ss", $veld1, $veld2);
        
        // Geef de variabelen een waarde
        $veld1 = 'iks';
        $veld2 = 'dee';
        mysqli_stmt_execute($stmt);

        // Nu een kwestie van nieuwe waarde bepalen en opnieuw uitvoeren...
        $veld1 = 'boris';
        $veld2 = 'niek';
        mysqli_stmt_execute($stmt);
        
        // Als laatste sluiten we de STMT
        mysqli_stmt_close($stmt);
    }

    else
    {
        echo "De query sjabloon bevat een fout.";
    }

?>


In plaats van s (string) kan ook: i voor integer, d voor double, b voor blob


Een zelfde voorbeeldje in OOP:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
    $stmt
= $mysqli->prepare("INSERT INTO tabel (veld1, veld2) VALUES (?, ?)");
    $stmt->bind_param('ss', $veld1, $veld2);
    $veld1 = 'iks';
    $veld2 = 'dee';
    $stmt->execute();
    $veld1 = 'boris';
    $veld2 = 'niek';
    $stmt->execute();
    $stmt->close();
?>


Opmerking Nee ik gebruik geen real_escape_string. Goed he, dat doet execute automatisch toepassen voor je.

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Inleiding
  2. Eisen aan de server
  3. Verbinden met MySQL server - nieuwe stijl
  4. Een simpele select
  5. Insert, update, delete -- old style
  6. Nu goed, STMT
  7. Verder....

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.