MySqli requête préparée select en poo – exemple

Exemple de fichier de requête avec php mysqli (orienté objet)

Cet exemple montre une requête simple sécurisée avec une requête préparée. Cette requête test avec des mots anglais français à titre d’exemple une connexion mysqli en programmation orientée objet.

La traduction est approximative, il s’agit d’un exemple de gestion de données.

<?php

$f_lettre_frm = $_POST[‘fletter’]; 1

if (empty($f_letter)) { // 2
die(« Sélection lettre requise »);
}

include_once(‘config_conn.php’); // 3

try {
$conn = new mysqli(SVR_IP, UTILISATEUR, MOTDEPASSE); // 4
} catch (mysqli_sql_exception $e) {
echo(« <p>Echec de la connexion</p> »);
$erreur = $e->getMessage();
//die($erreur); // 5
}

$conn->select_db(« bdd_01 »); // 6

$sql = « SELECT col1, col2, col3
FROM bdd_table
WHERE col1 LIKE ? »; // 7

$stmt = $conn->prepare($sql); // 8
$stmt->bind_param(‘s’, $f_letterB); // 9

$f_lettre = $f_lettre_frm.’%’; // 10

$stmt->execute(); // 11

$results = $stmt->get_result(); // 12

if (!$results){
//trigger_error(mysqli_error($conn), E_USER_ERROR);// 13
}

if (isset($conn)){
$conn -> close(); // 14
}

if ($results->num_rows > 0) { // 15

echo « <table style = ‘border:1px solid black;’ border = 1> »;
$ligne = «  »; // 15

while($row = $results->fetch_object()){  // 16
$ligne .= « <tr> »;
$ligne .= « <td> » . $row->col1 . « </td> »;
$ligne .= « <td> » . $row->col2 . « </td> »;
$ligne .= « <td> » . $row->col3 . « </td> »;
$ligne .= « </tr> »;
echo $ligne;
}
echo « </table> »;

$results->free_result(); // 17

}else {
die (« 0 résultat »);
}
?>

1 Lecture de la sélection de la lettre dans la page web qui est transférée à dans une variable à php par javascript de manière asynchrone (la page ne recharge pas). Des exemples sur ces techniques et les alternatives (avec jquery notamment) seront publiés sur la partie développement javascript

2 Condition sur la validité de la variable

3 – 5 Voir les étapes de connection

6 Sélection de la base de données avec « ->select_db() »

7 Requête paramétrée avec la balise « ? » pour placer la variable avec la méthode « bind_param() »

8 Déclaration requête préparée avec la méthode « prepare() »

9 Affectation de la balise « ? » avec « ->bind_param() »

10 Préparation de la variable de la clause « LIKE » de la requête

11 Exécution de la requête avec « ->execute() »

12 Copie de l’adresse des résultats avec « ->get_result() »

13 Condition en cas d’erreur pour afficher un message – affichage uniquement en développement

14 Fermeture de la connection

15 Condition en cas d’absences de résultat avec « num_rows »

16 Lecture des résultats avec « fetch_object() »

17 Libération de la mémoire qui contient les donnnées avec « free_result() »

18 Retour de la condition en cas de requête qui ne retourne pas de résultats

Le script ci-dessus montre un usage simple de php pdo avec une requête préparée. Pour les paramètres de la requête, en cas de saisie de l’utilisateur, il est conseillé de valider la saisie avant avec « filter_var() » et après avec « htmlspecialchars() ».