[PHP] Prob. de req type enum('false', 'true')

Résolu/Fermé
Thomason - 12 avril 2006 à 17:04
 Thomas - 12 avril 2006 à 18:05
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
********************************************
//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:

2 réponses

callapa Messages postés 11 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 12 avril 2006
12 avril 2006 à 17:19
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));
0
merci de ta réponse rapide,

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).....?
0
callapa Messages postés 11 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 12 avril 2006
12 avril 2006 à 17:51
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
0
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.

@++
0