Page 1 sur 1

mysqli_real_escape_string

Posté : 21 nov. 2014, 21:21
par Bosse.cie
Bonjour,

J'ai un petit problème bloquant que je n'arrive pas à résoudre.

Je veux insérer une ligne dans une table Compte avec deux colonnes : numero et libelle.

À savoir que numero est du varchar(15) et libelle un blob.

Ma variable $libelle contient le contenu de libelle a rentrer, et numero est 4 (dans cet exemple).

Si je fais :
$requete ="INSERT INTO Compte (numero,libelle) VALUES (\"4\",\"".$libelle."\")";
ça fonctionne.

Si je fais :
$requete ="INSERT INTO Compte (numero,libelle) VALUES ('4','".$libelle."')";
ça fonctionne aussi.

Par contre, dès que je cherche à utiliser mysqli_real_escape_string(), ça ne fonctionne plus. J'ai des erreurs mysql.

j'ai essayé les lignes suivantes qui ne fonctionnent pas :
mysqli_real_escape_string($connexion, "INSERT INTO Compte (numero,libelle) VALUES ('4','".$libelle."')");

mysqli_real_escape_string($connexion, "INSERT INTO Compte (numero,libelle) VALUES (4,".$libelle.")");

mysqli_real_escape_string($connexion, "INSERT INTO Compte (numero,libelle) VALUES (\"4\",\"".$libelle."\")");

mysqli_real_escape_string($connexion, "INSERT INTO Compte (numero,libelle) VALUES ('4','$libelle')");

mysqli_real_escape_string($connexion, "INSERT INTO Compte (numero,libelle) VALUES (4,'$libelle')");

Bref, je vois plus rien.
D'autant plus que lorsque je regarde la page de php.net sur cette fonction, je ne vois pas la différence avec les exemples marqués.

La seul différence pourrait-etre la commande
mysqli_set_charset($connexion, "utf8");
Que je mets plus haut.
J'ai tenté de l'enlever, ça ne change rien.

Suite à une recherche sur ce forum, je suis tombé sur un post où il est dit qu'il faut utiliser mysqli_real_escape_string seulement sur les variables, et non pas sur la requête entière (ce qui est contraire aux pages d'explication; et je ne vois pas bien la différence). J'ai donc essayé d'appliquer mysqli_real_escape_string que sur les variables; ça ne change rien.

Si je peux toujours m'en passer pour cet exemple puisque je sais précisément ce qu'il y a dans mes variables, j'en aurais besoin plus loin; alors quelqu'un a t'il une solution ?

Il est possible que ce soit un truc qui vous crève les yeux;m ais moi, je ne vois plus rien à force.

Merci

Michel

Re: mysqli_real_escape_string

Posté : 26 nov. 2014, 11:05
par Bosse.cie
Personne a d'idée ? ...

Re: mysqli_real_escape_string

Posté : 26 nov. 2014, 12:50
par Megadeth
Bonjour,

Que contient le $libelle ? Est-ce que la colonne numero est unique ?

Mega
;)

Re: mysqli_real_escape_string

Posté : 26 nov. 2014, 13:02
par Bosse.cie
Pour $libelle, la variable contient du texte codé puis base64encodifié (je propose le terme au dictionnaire de l'académie).

Pour NUMERO, oui, il est unique; et même forcément, puisqu'il s'agit du premier enregistrement dans la table.

Merci de ton aide.

Re: mysqli_real_escape_string

Posté : 26 nov. 2014, 13:13
par Megadeth
Re,

Si j'en crois cette page :

http://www.w3schools.com/php/func_mysql ... string.asp

Ce serait plutôt :

$libelle = mysqli_real_escape_string($con, $libelle);

puis ta requête d'insert normale.

Mega
;)

Ps : jeter un oeil aussi sur les prérequis de la fonction voir si le serveur le permet.

Re: mysqli_real_escape_string

Posté : 26 nov. 2014, 13:24
par Bosse.cie
Re,

Si j'en crois cette page :

http://www.w3schools.com/php/func_mysql ... string.asp

Ce serait plutôt :

$libelle = mysqli_real_escape_string($con, $libelle);

puis ta requête d'insert normale.

Mega
;)
Je vais ré-essayer.
En effet, je l'avais déjà tenté suite à un post que j'avais lu (sur ce forum je crois bien); mais ça ne fonctionnait pas mieux.
Il est toujours possible que j'ai fait une faute de frappe ou autre à ce moment-là, vu que ça faisait déjà des heures que j'étais dessus.

Ps : jeter un oeil aussi sur les prérequis de la fonction voir si le serveur le permet.
Oui ?
Qu'est-ce à dire ?

(jusqu'à oeil, je comprends; après...)

Re: mysqli_real_escape_string

Posté : 26 nov. 2014, 13:36
par Bosse.cie
Bon, j'ai re-testé en utilisant seulement mysqli_real_escape_string() sur la variable; et ça fonctionne.

Comme quoi, j'avais dû faire une erreur de frappe lorsque je l'avais testé. Une erreur qui me donnait le même problème que lorsque j'appliquais la fonction sur la totalité de la ligne (comme précisé dans le tutoriel de la fonction d'ailleurs).

Donc ça marche.

Merci à Megadeth.
Michel

Re: [RESOLU] mysqli_real_escape_string

Posté : 26 nov. 2014, 15:00
par Megadeth
De rien au plaisir :)

La communauté de PHP France est l'une des meilleurs que je connaisse.

Mega
;)