Mysqli_real_escape_string() et mysqli_last_insert()
Résolu
smsagnon
Messages postés
15
Date d'inscription
Statut
Membre
Dernière intervention
-
smsagnon Messages postés 15 Date d'inscription Statut Membre Dernière intervention -
smsagnon Messages postés 15 Date d'inscription Statut Membre Dernière intervention -
Bonjour je rencontre un probleme en utilisant la fnction mysqli_real_escape_string().
il s'affiche l'erreur suivant
voici le code jutilise
il s'affiche l'erreur suivant

voici le code jutilise
// connexion a la BDD
try{
$bdd=new PDO('mysql:host=localhost;dbname=nafere;charset=utf8;','root','');
$bdd->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e){
die('erreur'.$e->getMessage());
}
//fonction de securisation
function securite($valeur){
$valeur=htmlsepcialchars($valeur);
$valeur=htmlentities($valeur);
$valeur=trim($valeur);
$valeur=stripslashes($valeur);
return ($valeur);
}
$nom=securite($_POST['pseudo']);
$email=securite($_POST['email']);
$pass=securite($_POST['pass']);
// et la le probleme quand j'utiliser la fonction mysqli_real_escape_string() sur $pass il s'affcihe l'erreur precedent;
$pass2=mysqli_real_escape_string($bdd,$pass);
plus loin en j'ai besoin d'utiliser l'id du membre qui vien de s'inscrit(je veut pas lui demandr de se reconnectera fin d'avoi l'id)
du coup ds ma documentaion la fonction que j'ai trouve est:mysqli_last_insert()
elle aussi m'affiche la meme erreur:
voici le code jutilise
$_SESSION['user_id']=mysqli_last_insert($bdd);<code php>
1 réponse
Bonjour,
Si je lis bien l'erreur, votre fonction nécéssite un objet du type " mysqli" comme premier paramètre. Or votre BDD est un objet de type PDO.
Afin de faire un échappement vous pouvez utiliser soit la fonction prepare()/execute() de pdo qui évite tout injection dans une base Soit Utilise PDO->quote($string) qui fait sensiblement la même chose que mysqli_real_escape
Pour ce qui est de Lastinsert. Celui de PDO vous retourne directement l'id de la derniere insertion.
PDO-> lastInsertId();
Si je lis bien l'erreur, votre fonction nécéssite un objet du type " mysqli" comme premier paramètre. Or votre BDD est un objet de type PDO.
Afin de faire un échappement vous pouvez utiliser soit la fonction prepare()/execute() de pdo qui évite tout injection dans une base Soit Utilise PDO->quote($string) qui fait sensiblement la même chose que mysqli_real_escape
Pour ce qui est de Lastinsert. Celui de PDO vous retourne directement l'id de la derniere insertion.
PDO-> lastInsertId();
smsagnon
Messages postés
15
Date d'inscription
Statut
Membre
Dernière intervention
merci ça marche tres bien