[RESOLU] requete preparee

Petit nouveau ! | 9 Messages

30 juil. 2013, 09:12

Bonjour,

J'ai aussi un problème avec un requête préparée. voici le code :
$bdd = new PDO('mysql:host=localhost;dbname=externus','root','');
}
catch(Exception $e)
{
die('Erreur : ' .$e->getMessage());
}
$req=$bdd->prepare('SELECT nom_cabinet FROM identite WHERE pseudo = ?');
$req->execute(array($_COOKIE['pseudo']));
while ($donnees = $req->fetch())
{
echo $donnees['nom_cabinet'];
}
$req->closeCursor();
il ne se passe rien. il y a rien dans $données
pourtant sur une autre page cela marche très bien.
Si quelqu'un pouvait m'aider, j'y suis depuis 6 heure du matin j en peux plus...

merci d avance
Modifié en dernier par moogli le 30 juil. 2013, 09:41, modifié 1 fois.
Raison : bbcode colorisation de syntaxe php

Eléphant du PHP | 160 Messages

30 juil. 2013, 09:19

Bonjour,

Je ne sais pas si cela peut t'aider mais moi j'ai ça qui fontionne :
mysql_connect("localhost","user",""); 
mysql_select_db("test");

$sql = 'SELECT Valeurs FROM mots WHERE ID = 2';
$mot2 = mysql_query($sql);
$row2 = mysql_fetch_row($mot2);

mysql_close(); 
On ne sait jamais ;)

Petit nouveau ! | 9 Messages

30 juil. 2013, 09:33

chuis trop nul, je comprends rien à ton truc.

Ca marche si je fais pas de requete préparée. je comprends pas.

Petit nouveau ! | 9 Messages

30 juil. 2013, 11:19

J'ai modifié

le cookie s'affiche bien

echo $donnees['nom_cabinet']; ne donne rien et je n'ai pas de message d'erreur

echo $identite['nom_cabinet']; il me dit que la variable identite n'est pas définie

si une ame charitable pouvait m'aider svp

try
{
bdd = new PDO('mysql:host=localhost;dbname=externus','root','');
}
catch(Exception $e)
{
die('Erreur : ' .$e->getMessage());
}
echo $_COOKIE['pseudo'];
$req = $bdd->prepare('SELECT nom_cabinet FROM identite WHERE pseudo= ? ');
$req->execute(array($_COOKIE['pseudo'])) or die(print_r($req->errorInfo()));
while ($donnees = $req->fetch())
{
echo $donnees['nom_cabinet'];
$identite['nom_cabinet'] = $donnees['nom_cabinet'];
}
$req->closeCursor();
echo $identite['nom_cabinet'];

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

30 juil. 2013, 11:42

salut,

met le code dasn le try histoire de chopper les éventuelles exceptions.

le die c'est un peu brutal ;) (à la limite lève une exception pour faire un truc un poil plus propre).

utilise bindvalue et un paramètre nommé pour y voir plus clair.

tu as quoi dans $_COOKIE['pseudo'] ?

au passage cela sens la faille de sécurité en permettant de se connecter avec le cookie récupéré ? (pourquoi ne pas utiliser la valeur en session ?).


@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 9 Messages

30 juil. 2013, 11:58

y a mon prenom dans le cookie enfin du texte quoi. Je pense que c est ca le probleme mais je le fais par ailleurs et je n'ai pas de problème.

Je vais essayer avec bindvalue.

Oui je vais faire avec session mais c est encore trop compliqué pour moi.

merci de ta réponse

Petit nouveau ! | 9 Messages

30 juil. 2013, 15:00

try
		{
		$bdd = new PDO('mysql:host=localhost;dbname=externus','root','');
		}
		catch(Exception $e)
		{
			die('Erreur : ' .$e->getMessage());
		}
		echo $_COOKIE['pseudo'];
		$test = $_COOKIE['pseudo'];

		
		$req = $bdd->prepare('SELECT nom_cabinet FROM identite WHERE pseudo= ? ');
		$req->bindvalue($test, PDO::PARAM_STR);
		$req->execute();
		while ($donnees = $req->fetch())
		{
			echo $donnees['nom_cabinet'];
			$identite['nom_cabinet'] = $donnees['nom_cabinet'];
		}
		$req->closeCursor();
		echo $identite['nom_cabinet'];
voila j ai essayé avec bindvalue d'après l'exemple mais pas mieux, j ai cette erreur la en plus
Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp\www\extern-us3\compte.php on line 37

J'ai cherché partout, tous les cours et je comprends pas. je vois une corde, elle me parait bien. adieu communauté php sniff

Petit nouveau ! | 9 Messages

30 juil. 2013, 15:02

pfff la corde a cassé, y a rien qui marche aujourd'hui

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

30 juil. 2013, 16:45

donne nous le create table de la table et un exemple de donnée, se sera plus simple.

le dernier message indique que tous les paramètres ne sont pas lié, utilise un paramètre nommé (plus lisible ;) )


@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 9 Messages

30 juil. 2013, 17:40

Je suis désolé je suis vraiment novice. J'arrive pas à comprendre ce que tu veux dire par paramètre nommé. Mais je sens que ca va etre trop compliqué pour m'expliquer ca dans un post.

Je sais pas non plus faire le create table. Mais quand je ne passe pas par une requete prepare, que je mets "david" apres where tout fonctionne tres bien.

Je suis sur que david est dans le cookie. C'est ce qu'il affiche juste avant que j'ouvre la base.

Je fais la meme manip sur la page avec un include mais au lieu du $_COOKIE j ai mis un $_POST. ca fonctionne.

Bon je crois que je vais retourner a ma comptabilité. chacun son métier...

Petit nouveau ! | 9 Messages

30 juil. 2013, 18:22

ahhhhhhhhhhhhh j ai trouvé^^^^^^^

il y avait un espace dans mon COOKIE^^^

je débouche le champagne

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

30 juil. 2013, 18:55

:mrgreen: :mrgreen:

utilise la clef primaire de la table pour palier ce problème :)


une fonction utilise pour debuger : [urlz=http://www.php.net/var_dump]var_dump[/url]().


@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 9 Messages

30 juil. 2013, 20:25

merci de l info^^