Test avec base de données d'adjectifs anglais ou français
Exemple de fichier de requête préparée avec php pdo
Cette requête test avec des mots anglais français à titre d'exemple une connexion mysqli en procédural
La traduction est approximative, il s'agit d'un exemple de gestion de données.
<?php
include_once('config_conn.php');
//1
$f_lettre_frm = $_POST['fletter'];
2
if (empty($f_letter)) {
//3 die("Sélection lettre requise");
}
$dsn = "mysql:host=" . SVR_IP . ";dbname=" . BDD . ";charset=". CHRSET;
//4
try {
//5 $pdo_conn = new PDO($dsn, UTILISATEUR, MOTDEPASSE);
//6 $pdo_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//7 // echo "Paramètres de connection à la base de données valides";
} catch (Exception $e) {
error_log($e->getMessage());
//8 echo "<p>Erreur de connection paramètres base de données </p>";
// echo "<p>Affichage erreur: </p>" . $e->getMessage();
}
$f_lettre = $f_lettre_frm.'%';
//9
$sql = "SELECT col1, col2, col3
FROM bdd_table
WHERE adj_fr_masc LIKE ?
OR adj_eng LIKE ?";
$stmt = $pdo_conn->prepare($sql); //
10
$pdo_conn = null;
//11
$f_letterB = $f_letter.'%';
//12
$stmt->execute([$f_letterB,$f_letterB]);
//13
$arrValues = $results->fetchAll(PDO::FETCH_ASSOC);
//14
$nb_lig = $results->rowCount();
if ($nb_lig > 0) {
//15
echo "<table style = 'border:1px solid black;' border = 1>;"
echo "<tr>";
foreach ($arrValues[0] as $cle => $xyz){
print "<th>$cle</th>";
//16 }
echo "</tr>";
foreach ($arrValues as $row){
echo "<tr>";
foreach ($row as $cle => $val){
echo "<td>$val</td>";
//17 }
echo "</tr>";
}
echo "</table>";
} else {
die ("Aucun résultat");
}
?>
LIKE
de la requête
prepare()
qui initialise le mode requête préparée
->$pdo_conn = null;
FetchAll
pour stocker le résultat de la requête dans un tableau associatif
$results->rowCount()
Il est également possible d'utiliser bindParam() pour affecter un ou plusieurs paramètres à une requête préparée.
Cet exemple montre un usage simple d'une connexion à mysql avec l'api pdo. Dans le cas d'un formulaire de saisie plus complet, des validations de saisie seront nécessaires pour augmenter la sécurité...