Page 1 sur 1

colonne inconnue

Posté : 16 juin 2014, 17:01
par moimeme30
Bonjour,

Voici mon code:
if (isset($_GET['id']) AND isset($_GET['session']) AND isset($_GET['token'])) {

$id = $_GET["id"] ;
$session = $_GET["session"] ;
$token = $_GET["token"] ;

	$req = Cnx::connectCnx()->prepare("SELECT * FROM equipe WHERE id=$id AND session=$session AND token=$token "); //ligne 13 ou se trouve l'erreur
	$req->execute(array($id, $session, $token)); 
	$res = $req->rowCount();
	//si résultat,
	if($res == 1) {
			$req = Cnx::connectCnx()->prepare("UPDATE equipe SET activate=1 WHERE id=$id AND session=$session AND token=$token") ;
			$req -> bindParam(':id', $_POST['id'], PDO::PARAM_INT, 11);
                        $req -> bindParam(':activate', $_POST['activate']);
                        $req -> bindParam(':session', $_POST['session']);
                        $req -> bindParam(':token', $_POST['token']);
			$req -> execute(); 

			echo "Votre compte est désormais activé. Redirection en cours... ";
			header ("Refresh: 3;URL=login.php");
			exit();
			
		}
	//pas de résultat	
	else {
			header ("Refresh: 0;URL=index.php");
			exit();
		}

}
else { echo "erreur";}
et j'obtiens l'erreur
Warning: PDOStatement::execute(): SQLSTATE[42S22]: Column not found: 1054 Unknown column '74a73h6mg771ebdeke087aido7' in 'where clause' in C:\wamp\www\activate.php on line 13
Si je supprime "AND session=$session AND token=$token" ça fonctionne.
Donc je comprend plus rien.

Quelqu'un a une idée svp?

Re: colonne inconnue

Posté : 16 juin 2014, 17:14
par sirakawa
Peut-on faire:
var_dump($req) ?
de façon utile?

Re: colonne inconnue

Posté : 16 juin 2014, 17:33
par moimeme30
le var_dump me donne ceci:
object(PDOStatement)[3]
public 'queryString' => string 'SELECT * FROM equipe WHERE id=78 AND session=74a73h6mg771ebdeke087aido7 AND token=6796f075be48ddfbb8398350f33688f86f08d12e ' (length=123)

J'ai testé cette requete dans phpmyadmin et il me sort la même erreur.
Par contre si je met les ' ' autour de $session et $token ca fonctionne.
Mais ce que je ne comprend pas c'est que je n'utilise pas les quotes de tout mon site et tout fonctionne nikel....

Re: colonne inconnue

Posté : 16 juin 2014, 17:38
par telnes
hello
        $req = Cnx::connectCnx()->prepare("SELECT * FROM equipe WHERE id=$id AND session=$session AND token=$token "); //ligne 13 ou se trouve l'erreur
        $req->execute(array($id, $session, $token)); 
regarde de nouveau les requete préparé car la tu nous fait un mix de pas préparé avec une syntaxe préparé .. :non:

cf exemple 1 http://php.net/manual/fr/pdo.prepare.php (les var dans ta res sql doivent avoir une tete :mavar et dans ton tab array il faut les clé :mavar=>value)

bref regarde l'exemple

Re: colonne inconnue

Posté : 16 juin 2014, 20:43
par moimeme30
Merci de ton aide, j'ai vérifié et la je pense avoir bon.
if (isset($_GET['id']) AND isset($_GET['session']) AND isset($_GET['token'])) {

$id = $_GET["id"] ;
$session = $_GET["session"] ;
$token = $_GET["token"] ;

	$req = Cnx::connectCnx()->prepare("SELECT count(*) FROM equipe WHERE id=:id AND session=:session AND token=:token AND activate=0");
	$req -> bindParam(':id', $id, PDO::PARAM_INT, 11);
	$req -> bindParam(':session', $session);
	$req -> bindParam(':token', $token);
	$req -> execute();
	$result = $req->fetchColumn(); 
	if($result == 1){//si existe,
			$req1 = Cnx::connectCnx()->prepare("UPDATE equipe SET activate=1 WHERE id=:id AND session=:session AND token=:token") ;
			$req1 -> bindParam(':id', $id, PDO::PARAM_INT, 11);
			$req1 -> bindParam(':session', $session);
			$req1 -> bindParam(':token', $token);
			$req1 -> execute(); 
			echo "Votre compte est désormais activé. Redirection en cours... ";
			header ("Refresh: 3;URL=login.php");
		}
		else{//pas de résultat	
			header ("Refresh: 0;URL=index.php");
		}
}
else{ 
	echo "erreur";
}
Ca fontionne à moitié en fait. Je ne comprend pas, mais lorsque je change dans la barre d'adresse le token ou la session, l'erreur apparaît mais l'update est quand même réalisé. et ce 2 fois sur 3... c'est à dire que parfois la BDD n'est pas mise a jour...

Re: colonne inconnue

Posté : 16 juin 2014, 20:48
par Elie
Moi ce qui me gene c'est un header() apres un echo ...

Re: colonne inconnue

Posté : 16 juin 2014, 20:55
par moimeme30
Pourquoi ca te gene?
et ça ne change rien à mon problème me semble t il?

Re: colonne inconnue

Posté : 16 juin 2014, 21:00
par Elie
http://www.php.net/manual/fr/function.header.php
N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichages PHP.
C'est la meme erreur qui s'affiche ? Celle qui dit que la collone avec la session n'existe pas ?

Re: colonne inconnue

Posté : 16 juin 2014, 21:07
par moimeme30
Le pbm de la colonne inconnue est réglée...
Maintenant ce qui me pose problème c'est que l'update activate=1 fonctionne même si la condition précedente n'est pas remplie. Et en plus m'indique l'erreur de la condition non remplie.

Re: colonne inconnue

Posté : 16 juin 2014, 21:13
par Elie
$result = $req->rowCount();
        if($result == 1){//si existe,
Et avec ca ?

Re: colonne inconnue

Posté : 16 juin 2014, 21:17
par moimeme30
pas mieux, parfois la mise a jour est faite, parfois non, et par contre m'indique toujours que l'enregistrement a eu lieu.

Re: colonne inconnue

Posté : 16 juin 2014, 21:56
par moimeme30
EN fait tu m'as dis quelque chose de judicieux mais que je ne sais pas résoudre.
Lorsque je met un echo après la requête ça fonctionne 3 fois sur 4... mais si je met un header, alors, la mise a jour est faite systématiquement, sans tenir compte des conditions