Impossible utiliser variable dans requete SQL
Résolu/Fermé
hibito3568
-
22 août 2011 à 18:16
Zhp Messages postés 198 Date d'inscription mercredi 27 avril 2011 Statut Membre Dernière intervention 5 mars 2013 - 29 août 2011 à 18:53
Zhp Messages postés 198 Date d'inscription mercredi 27 avril 2011 Statut Membre Dernière intervention 5 mars 2013 - 29 août 2011 à 18:53
Bonjour,
désolé pour le titre mais je manquais de place
j'ai pioché dans un site un script php de codage qui fonctionne a merveille et qui utilise les variable $encrypt et $décrypt mais je n'arrive pas a utiliser ces variable pour des requetes SQL , voila le code :
$bdd->exec('CREATE TABLE IF NOT EXISTS test( $encrypt VARCHAR(50))');
la requete ce fait , le message indiquant le succès est afficher mais la colonne est $encrypt et non son contenu...
après avoir essayer "echo" cela ne marche toujour pas
merci d'avence pour vos réponses
désolé pour le titre mais je manquais de place
j'ai pioché dans un site un script php de codage qui fonctionne a merveille et qui utilise les variable $encrypt et $décrypt mais je n'arrive pas a utiliser ces variable pour des requetes SQL , voila le code :
$bdd->exec('CREATE TABLE IF NOT EXISTS test( $encrypt VARCHAR(50))');
la requete ce fait , le message indiquant le succès est afficher mais la colonne est $encrypt et non son contenu...
après avoir essayer "echo" cela ne marche toujour pas
merci d'avence pour vos réponses
A voir également:
- Impossible utiliser variable dans requete SQL
- Utiliser chromecast - Guide
- Utiliser iphone comme webcam - Guide
- Comment utiliser l'ia - Accueil - Guide Intelligence artificielle
- Comment utiliser utorrent - Télécharger - Téléchargement & Transfert
- Utiliser tablette comme deuxieme ecran - Guide
11 réponses
Zhp
Messages postés
198
Date d'inscription
mercredi 27 avril 2011
Statut
Membre
Dernière intervention
5 mars 2013
37
22 août 2011 à 18:33
22 août 2011 à 18:33
Bonjour,
Je suis pas un crack dans le domaine mais selon moi il faut faire la requête en deux temps.
Petit explication : On prépare la requête avec la/les variable(s) mais elle n'est défini qu'au moment de l'exécution. On passe la/les variable(s) dans un tableau. Ce qui est pratique c'est que c'est plutôt bien sécurisé contre les injections SQL ^^
Y a peut-être une meilleur solution...
Je suis pas un crack dans le domaine mais selon moi il faut faire la requête en deux temps.
$req = $bdd->prepare('CREATE TABLE IF NOT EXISTS test( :encrypt VARCHAR(50))'); $req->execute(array('encrypt' => $encrypt));
Petit explication : On prépare la requête avec la/les variable(s) mais elle n'est défini qu'au moment de l'exécution. On passe la/les variable(s) dans un tableau. Ce qui est pratique c'est que c'est plutôt bien sécurisé contre les injections SQL ^^
Y a peut-être une meilleur solution...
mysql me répond qu'il y a une violancion d'accès
( Erreur : SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''£ ¥è¢ãr_y;x' VARCHAR(50))' at line 1
que faire?
( Erreur : SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''£ ¥è¢ãr_y;x' VARCHAR(50))' at line 1
que faire?
Zhp
Messages postés
198
Date d'inscription
mercredi 27 avril 2011
Statut
Membre
Dernière intervention
5 mars 2013
37
22 août 2011 à 18:54
22 août 2011 à 18:54
Arf... J'ai prévenu je suis pas un crack ^^""
Sinon tu peut essayer comme ceci :
La ce coup si c'est plus PDO qui injecte la variable mais tu prépare directe la requête. J'espère que ce coup ci ça va fonctionné. Attention quand même dans un cas comme cela c'est très critique au niveau sécurité (si toute foi ça marche XD)
Sinon tu peut essayer comme ceci :
$reqSQL = 'CREATE TABLE IF NOT EXISTS test(' . $encrypt . 'VARCHAR(50))'; $bdd->execute($reqSQL);
La ce coup si c'est plus PDO qui injecte la variable mais tu prépare directe la requête. J'espère que ce coup ci ça va fonctionné. Attention quand même dans un cas comme cela c'est très critique au niveau sécurité (si toute foi ça marche XD)
cette fois c'est PDO qui n'est pas content....
Fatal error: Call to undefined method PDO::execute() in C:\wamp\www\test.php on line 106
^^
Fatal error: Call to undefined method PDO::execute() in C:\wamp\www\test.php on line 106
^^
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Zhp
Messages postés
198
Date d'inscription
mercredi 27 avril 2011
Statut
Membre
Dernière intervention
5 mars 2013
37
Modifié par Zhp le 22/08/2011 à 19:01
Modifié par Zhp le 22/08/2011 à 19:01
Oui c'est normal j'ai fait une grosse faut T_T
$bdd->exec($reqSQL); (et non $bdd->execute($reqSQL);)
think for yourself, question authority...
$bdd->exec($reqSQL); (et non $bdd->execute($reqSQL);)
think for yourself, question authority...
on revient au point de départ ,
Erreur : SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '©§ ¢-- «¡i©qVARCHAR(50))' at line 1
je peut vous donner le script de codage au cas ou : http://www.phpcs.com/codes/CRYPATGE-DECRYPTAGE-TEXTE_26693.aspx
Erreur : SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '©§ ¢-- «¡i©qVARCHAR(50))' at line 1
je peut vous donner le script de codage au cas ou : http://www.phpcs.com/codes/CRYPATGE-DECRYPTAGE-TEXTE_26693.aspx
Zhp
Messages postés
198
Date d'inscription
mercredi 27 avril 2011
Statut
Membre
Dernière intervention
5 mars 2013
37
22 août 2011 à 19:16
22 août 2011 à 19:16
Dans la variable $encrypt il y a quoi ? C'est une chaîne crypté ? avec plein de caractère bizarre ?
C'est surement pour cela que ça me fonctionne pas SQL ne veux que des caractères précis pour ces noms de colonne.
Je sais pas ce que tu cherche a faire exactement mais ce script SQL demande la création d'une table test (si elle n'existe pas) avec une colonne don le nom serait la variable $encrypte...
C'ets bien cela que tu veux faire ?
C'est surement pour cela que ça me fonctionne pas SQL ne veux que des caractères précis pour ces noms de colonne.
Je sais pas ce que tu cherche a faire exactement mais ce script SQL demande la création d'une table test (si elle n'existe pas) avec une colonne don le nom serait la variable $encrypte...
C'ets bien cela que tu veux faire ?
oui c'est cela mais la chaine cryptée contien que des caractère bizarres , je vais cherché une clée qui ne crypte qu'en caractère visible et je poste la réponse
re bonjour
maintenant j'ai un code qui encrypte les mots en chiffres et lettres problème : le typr de donnée SQL n'est que texte ou que chiffres , y'a t-il une solution a ce problème?
PS : cette requete marche très bien ^^
$req = $bdd->prepare('CREATE TABLE IF NOT EXISTS test( :encrypt VARCHAR(50))');
$req->execute(array('encrypt' => $encrypt));
merci
maintenant j'ai un code qui encrypte les mots en chiffres et lettres problème : le typr de donnée SQL n'est que texte ou que chiffres , y'a t-il une solution a ce problème?
PS : cette requete marche très bien ^^
$req = $bdd->prepare('CREATE TABLE IF NOT EXISTS test( :encrypt VARCHAR(50))');
$req->execute(array('encrypt' => $encrypt));
merci
et voilà!!
après maint et maint éssai , j'ai réussi!
en fait , c'est VARCHAR qui bloquais , je l'ai remplacé par TEXT
ensuite la ligne
$req = $bdd->prepare('CREATE TABLE IF NOT EXISTS test( :encrypt VARCHAR(50))');
n'allais pas , je l'ai remplacé par
$req = $bdd->prepare('CREATE TABLE IF NOT EXISTS test( ' . $encrypt . ' VARCHAR(50))');
et enfin j'ai remplace les chiffres , les majuscules et les caractères spéciaux en suite de lettres (pour le décodage) car en lettres cela n'aurait pas convenu au moments du décodage
bref , merci beaucoup a ZHP pour ces solutions qui m'ont beaucoup aidées
cordialement
après maint et maint éssai , j'ai réussi!
en fait , c'est VARCHAR qui bloquais , je l'ai remplacé par TEXT
ensuite la ligne
$req = $bdd->prepare('CREATE TABLE IF NOT EXISTS test( :encrypt VARCHAR(50))');
n'allais pas , je l'ai remplacé par
$req = $bdd->prepare('CREATE TABLE IF NOT EXISTS test( ' . $encrypt . ' VARCHAR(50))');
et enfin j'ai remplace les chiffres , les majuscules et les caractères spéciaux en suite de lettres (pour le décodage) car en lettres cela n'aurait pas convenu au moments du décodage
bref , merci beaucoup a ZHP pour ces solutions qui m'ont beaucoup aidées
cordialement
Zhp
Messages postés
198
Date d'inscription
mercredi 27 avril 2011
Statut
Membre
Dernière intervention
5 mars 2013
37
29 août 2011 à 18:53
29 août 2011 à 18:53
Merci, je n'est pas fait grand chose ^^"
si c'est bon passe le post en résolu
A+
si c'est bon passe le post en résolu
A+