Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2436 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  tout ptit problème php

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

tout ptit problème php

n°2101141
x-ben
Posté le 12-09-2011 à 23:02:59  profilanswer
 

Salut,
je fais une requête dans une base mysql:

Code :
  1. $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
  2. $bdd = new PDO('mysql:host=localhost;dbname=ttt', 'lll', 'eee', $pdo_options);
  3. $reponse = $bdd->query('SELECT * FROM a where adresse = \''.$adresse.'\'');
  4. while ($donnees = $reponse->fetch())
  5. {
  6. $p1 = $donnees['y'];
  7. echo $p1;
  8. }


 
j'ai 100 lignes différentes dans ma table a (toute les adresses sont uniques)
je m'attend donc à ce qu'il m'affiche 1X la ligne correspondant au resultat de ma requete mais au lieu de ça il me l'affiche 100X
 
pkoi  [:at war with emo]  
 


---------------
LaBrute
mood
Publicité
Posté le 12-09-2011 à 23:02:59  profilanswer
 

n°2101380
x-ben
Posté le 13-09-2011 à 22:32:28  profilanswer
 

up  :jap:


---------------
LaBrute
n°2101416
h4rold
Posté le 14-09-2011 à 09:12:13  profilanswer
 

Tu peux afficher la valeur de ton select ?
 
$bdd = new PDO('mysql:host=localhost;dbname=ttt', 'lll', 'eee', $pdo_options);
$q='SELECT * FROM a where adresse = \''.$adresse.'\'';
echo $q;
$reponse = $bdd->query($q);
 
Voir la tronche de ta requete.

n°2101567
x-ben
Posté le 14-09-2011 à 18:31:05  profilanswer
 

ça donne ça:
 
SELECT * FROM o,u where adresse = \".$adresse.\"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 '\".$adresse.\"' at line 1


---------------
LaBrute
n°2101568
x-ben
Posté le 14-09-2011 à 18:36:42  profilanswer
 

j'ai fais ça:
 
$q = 'SELECT * FROM o,u where adresse = "'.$adresse.'"';
 
et donc ça m'affiche:
 
SELECT * FROM o,u where land = "b.h@g.com"
 
Les mots de passe ont été envoyés sur votre boite mail
b.h@g.com
 
Les mots de passe ont été envoyés sur votre boite mail
b.h@g.com
 
(100X) 100 étant le nombre de ligne dans la table u. et ça m'envoie 100X le mail à la mème adresse


---------------
LaBrute
n°2101618
CyberDenix
Posté le 15-09-2011 à 00:19:43  profilanswer
 

Spa possible ton truc.  :sweat:  
 
Fais-nous un
 

Code :
  1. <?php
  2.  
  3. $sqlCommand = 'SELECT * FROM aaa A JOIN bbb B ON A.id = B.fkA where adresse = ?';
  4. $params = array($adresse);
  5.  
  6. echo 'Execute: '.strtr($sqlCommand, array('?'=>'\''.$adresse.'\'')).'<br/>';
  7.  
  8. $statement = $this->dbh->prepare($sqlCommand);
  9. $statement->execute($params);
  10. $results = $statement->fetchAll();
  11. $statement->closeCursor();
  12.  
  13. print_r($results);
  14.  
  15. if ($results) {
  16.  $i = 0;
  17.  foreach($results as $result) {
  18.    echo (++$i).'<br/>';
  19.  }
  20. }
  21.  
  22. ?>


 
Et avant tout ça, exécute un 'SET NAMES utf8', on sait jamais.
 
A mon avis ton problème vient juste de la jointure qui est réalisée sans discriminant, et tu te retrouves logiquement avec le produit cartésien de tes tables. Si t'es crado tu fais un distinct, si t'es bogoss tu mets une condition de jointure (voir les INNER JOIN, ou JOIN, en MySQL) en liant la clé primaire de la table A avec la clé étrangère (the A foreign key) fkA de la table B, en partant du principe que A est le maître et B l'esclave.


Message édité par CyberDenix le 15-09-2011 à 00:27:18
n°2101762
x-ben
Posté le 15-09-2011 à 22:16:41  profilanswer
 

arf le blaireau j'avais pas mis ce qui permet de faire le lien entre les tables aaa et bbb (-> select * from (...) AND aaa.id = bbb.id )
 
merci à vous


---------------
LaBrute
n°2101808
antac
..
Posté le 16-09-2011 à 10:49:16  profilanswer
 

MALHEUREUX, ne fait pas des jointures comme ça.... INNER JOIN est ton ami.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  tout ptit problème php

 

Sujets relatifs
ptit probleme pour afficher du contenu sql en PHP[résolu]problème avec un ptit programme bootable.
[Caml] Conception de ptit jeux --> probleme!toujours ptit probleme de script
Ptit problème de compile[C] Ptit problème de newbi [OK]
ptit probleme avec FontMetrics[PHP BB] Un ptit problème de mail
ptit probleme tout con +1 poukoi t'range plante ?ptit probleme facile a resoudre
Plus de sujets relatifs à : tout ptit problème php


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR