Bonjour la room,
Je rencontre un petit problème avec mon code.
J'utilise PDO mais je ne maitrise pas encore très bien le Data Objects
je récupère par ajax => le dernier id utilisé et un commentaire depuis un textarea.
Je veux faire un update dans la base de données, mais j'ai un problème d'enregistrement dès que quelqu'un ajoute une quote " ' " dans le textarea.
la moindre quote mets une valeur null a la place du commentaire.
<?php
session_start();
require("../config/database.php");
$id = $_POST["id"];
$commentaire = $_POST["commentaire"];
/* $id=3;
$commentaire = "l'état n°3 èé uûü$€#~}{"; */
//$commentaire = str_replace("'","\'", $commentaire);
/* Création d'un objet "reqcommentaire" pour une requête préparée UPDATE du commentaire */
$reqcommentaire = $db->prepare("UPDATE noteznous
SET commentaire = '$commentaire'
Where id_enquete = $id
");
/* Exécution de la requête "reqcommentaire" */
$reqcommentaire->execute();
/* Ferme le curseur "reqcommentaire" pour pouvoir executer une nouvelle requête */
$reqcommentaire->closeCursor();
/* Ferme la connexion a la base de données */
$db = null;
Eviter les injection sql
Eviter d'utiliser la fonction "str_replace()" et rester en PDO
Il s'agit de préparer la requête avec des marqueurs.
Vous aurez plus d'info sur la méthode prépare de pdo
Comme je l'ai dit, pour styliser le code, il suffit d'utiliser la balise </ > et d'insérer le code entre les ...
Bonjour,
Tu as la méthode quote de PDO qui permet de protéger de ses éléments.
Sinon pour être plus lisible sur ton post, utilise la balise "< />" pour mettre ton code
Je t'invite a revoir également la méthode prepare de PDO car là, tu ne l'utilises pas correctement
Bonsoir @Carouge10 ,
Comment utiliser correctement le PDO pour une update ?
avec des valeures $_POST venue d'ajax
Merci pour vos réponses
Faut-il déjà maitre la requête sql
"UPDATE noteznous
SET commentaire = '$commentaire'
Where id_enquete = $id
"
dans une variable du style $req = ' la requête sql '
Pouvzez -vous me préciser ou m'expliquer l'erreur comise en PDO
Merci
1/ On protège le commentaire des données pouvant être dangereuse (les " ou '...)
2/ On fais une requête propre pour protéger des injections SQL
<?php
session_start();
require("../config/database.php");
$id = $_POST["id"];
$commentaire = $_POST["commentaire"];
/* $id=3;
$commentaire = "l'état n°3 èé uûü$€#~}{"; */
//$commentaire = str_replace("'","\'", $commentaire);
// Protection du commentaire
$commentaire = $db->quote($commentaire);
/* Création d'un objet "reqcommentaire" pour une requête préparée UPDATE du commentaire */
$reqcommentaire = $db->prepare("UPDATE noteznous
SET commentaire = ?
WHERE id_enquete = ?");
/* Exécution de la requête "reqcommentaire" */
$reqcommentaire->execute(array($commentaire, $id);
/* Ferme le curseur "reqcommentaire" pour pouvoir executer une nouvelle requête */
$reqcommentaire->closeCursor();
/* Ferme la connexion a la base de données */
$db = null;
Je fais ça à la volée.
SET commentaire = ?
WHERE id_enquete = ?
Désoler Je suis vraiment pas un bon codeur lol
mais je ne comprends pas pourquoi vous mettez des " ? " dans la rquête sql
Quel est l'interet ou le fonctionnement ...
Sinon comment on fait pour mettre en page correctement le code dans le forum (avec le cadre noir et les syntaxes colorisés).
Je suis nouveau