Ab der PHP-Version 5.1.0. stehen die gebundenen Parameter auch für PDO-Objekte zur Verfügung.
Um potentielle SQL-Injection-Angriffe zu verhindern, sollten ausschließlich gebundene Parameter verwendet werden. In einer SQL-Anweisung eingefügten Variablen aus z. B. einem GET-Parameter können problemlos gehackt werden.
Beispiel:
<?php $pdo = new PDO( "mysql:host=" . DB_HOST . ";dbname=" . DB_DATABASE, DB_USER, DB_PASSWORD ); $stmt = $pdo->prepare( 'SELECT Nachname FROM Benutzer WHERE id = :id' ); $stmt->bindParam( ':id', $_GET['id'], PDO::PARAM_INT ); $stmt->execute(); ?>
Als Datentypen stehen die folgenden vordefinierten Konstanten (im Beispiel oben = PDO::PARAM_INT) zur Verfügung:
Konstante | Datentyp |
---|---|
PDO::PARAM_BOOL | Boolean |
PDO::PARAM_INT | Integer |
PDO::PARAM_STR | Char, Varchar und alle anderen String-Typen |
PDO:PARAM_LOB | Large object (LOB) |