[PHP] Prob. de req type enum('false', 'true')
Résolu
Thomason
-
Thomas -
Thomas -
Bonjour à tous,
Voici mon problème :
lorsque j'execute la requete via ma class MYSQL qui se trouve dans le fichier mysqli.php (qui fonctionne sans problème avec les autres requetes) il me dit qu'il y a un problème dans ma requete:
UPDATE ftpuser SET LoginAllowed = 'false', grant = 'false' WHERE userid = 'thomas'
Fatal error: requete invalide in h:\program files\wamp\www\test\mysqli.php on line 48
Voici le contenue de mon php
********************************************
*******************************************
Pour info voici la structure de mes champs dans mysql:
champs "LoginAllowed" type "enum('true','false')"
champs "grant" type "enum('true','false')"
je pense que le problème pourrait peut-etre venir du type des champs enum. mais je ne peu pas les modifier pour des raisons de compatibilite avec un autre programme.
si quelqu'un pouvait m'aider je lui en serai reconnaissant....merci
Voici mon problème :
lorsque j'execute la requete via ma class MYSQL qui se trouve dans le fichier mysqli.php (qui fonctionne sans problème avec les autres requetes) il me dit qu'il y a un problème dans ma requete:
UPDATE ftpuser SET LoginAllowed = 'false', grant = 'false' WHERE userid = 'thomas'
Fatal error: requete invalide in h:\program files\wamp\www\test\mysqli.php on line 48
Voici le contenue de mon php
********************************************
//Admin_valid.php include('mysqli.php'); $Grant = $_POST['GRANT'];//récupére le value true ou false du bouton radio (GRANT) de la page admin.htm $FTP = $_POST['FTP'];//récupére le value true ou false du bouton radio (FTP) de la page admin.htm $userid = $_POST['userid']; $query = sprintf("UPDATE ftpuser SET LoginAllowed = '%s', grant = '%s' WHERE userid = '%s'", //mysql_real_escape_string('ftpuser'), mysql_real_escape_string($FTP), mysql_real_escape_string($Grant), mysql_real_escape_string($userid)); echo $query; $db = NEW mysql; //on instancie la classe if ($db->requete($query)==true){ //utilisation de methode requete avec en paramètre la variable query echo "<center>Modification réussi.</center>"; }
*******************************************
Pour info voici la structure de mes champs dans mysql:
champs "LoginAllowed" type "enum('true','false')"
champs "grant" type "enum('true','false')"
je pense que le problème pourrait peut-etre venir du type des champs enum. mais je ne peu pas les modifier pour des raisons de compatibilite avec un autre programme.
si quelqu'un pouvait m'aider je lui en serai reconnaissant....merci
A voir également:
- [PHP] Prob. de req type enum('false', 'true')
- Acronis true image - Télécharger - Sauvegarde
- Easy php - Télécharger - Divers Web & Internet
- Clear type - Guide
- Type de ram - Guide
- True crypt - Télécharger - Chiffrement
2 réponses
Bonjour Thomason,
On pourrait peut être penser que ta requête ne pointe pas vers la bonne base donc essaie avec un mysql_select_db(ma_base_de_donne)
Sinon je pense plutôt pour un problème de requete, as-tu essayé ta requête tel quel apparait avec ton echo $query ? Fait un copier-coller et essaie-la directement depuis ton phpmyadmin (en supposant qu'il y soit installé) auquel cas remplace ta requête par celle-ci :
$query = sprintf("UPDATE ftpuser SET `LoginAllowed` = '%s', `grant` = '%s' WHERE `userid` = '%s'",
mysql_real_escape_string($FTP),
mysql_real_escape_string($Grant),
mysql_real_escape_string($userid));
On pourrait peut être penser que ta requête ne pointe pas vers la bonne base donc essaie avec un mysql_select_db(ma_base_de_donne)
Sinon je pense plutôt pour un problème de requete, as-tu essayé ta requête tel quel apparait avec ton echo $query ? Fait un copier-coller et essaie-la directement depuis ton phpmyadmin (en supposant qu'il y soit installé) auquel cas remplace ta requête par celle-ci :
$query = sprintf("UPDATE ftpuser SET `LoginAllowed` = '%s', `grant` = '%s' WHERE `userid` = '%s'",
mysql_real_escape_string($FTP),
mysql_real_escape_string($Grant),
mysql_real_escape_string($userid));
Je viens de créer une base de test comme ceci
CREATE TABLE ftpuser (
LoginAllowed enum('true','false') NOT NULL default 'false',
grant enum('true','false') NOT NULL default 'false',
userid varchar(50) NOT NULL default ''
) TYPE=MyISAM;
et la requete qui fonctionne est la suivante :
UPDATE ftpuser SET `LoginAllowed` = 'false', `grant` = 'false' WHERE `userid` = "thomas";
Essaie avec les doubles cotes pour le userid
CREATE TABLE ftpuser (
LoginAllowed enum('true','false') NOT NULL default 'false',
grant enum('true','false') NOT NULL default 'false',
userid varchar(50) NOT NULL default ''
) TYPE=MyISAM;
et la requete qui fonctionne est la suivante :
UPDATE ftpuser SET `LoginAllowed` = 'false', `grant` = 'false' WHERE `userid` = "thomas";
Essaie avec les doubles cotes pour le userid
je te remercie ca marche maitenant, le problème venait en fait des quotes inversé, et quand j'ai copié ta requete avec les quotes inversés jen ai oublié une partie (la dernière quote).
donc le problème venait des quotes inversés.
désolé pour le message précédent.
je te remercie encore une fois. je ferais attention la prochaine fois.
@++
donc le problème venait des quotes inversés.
désolé pour le message précédent.
je te remercie encore une fois. je ferais attention la prochaine fois.
@++
pour mysql_select_db(ma_base_de_donne), celui-ci est déja paramétré, dans ma classe MYSQL dans le _construct, celui-ci fonctionne jusqu'a maintenant sans problème.
j'ai éssayer d'utiliser ta requete avec les quotes inversé, mais malheureusement j'ai le même résultat.
pour info j'utilise bien phpmyadmin.
pense-tu que le problème pourait venir du type des champs (enum).....?