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

 


Dernière réponse
Sujet : [php/MySQL] erreur de requete ou de récupération des données
pompom MySQL a quelque ptis soucis avec les requètes imbriquées (ie sous requètes) c ptet ça qui cloche ( ou alors le php permet de contourner le probleme)
si c'est bien ça, va faire un tour sur mysql .com dans l'aide en ligne le problème est documenté (si tu trouve pas mail moi je doi avoir le lien directe qui traine dans un coin)

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
pompom MySQL a quelque ptis soucis avec les requètes imbriquées (ie sous requètes) c ptet ça qui cloche ( ou alors le php permet de contourner le probleme)
si c'est bien ça, va faire un tour sur mysql .com dans l'aide en ligne le problème est documenté (si tu trouve pas mail moi je doi avoir le lien directe qui traine dans un coin)
omega2

phleup a écrit a écrit :

voilà, g un souscis avec mon script, à l'executtion, il m' dit que l'erreur se trouve sur la ligne : while($row = mysql_fetch_row($result)) et c'est : "Warning: 0 is not a MySQL result index"
 mais en fait je pense que l'erreure vient de la requete mais je ne voit pas pourquoi. kkun peut-il m'expliquer mon erreure merci
 
 
<?php
 
$host = localhost;  
$user = "user";
$bdd = "mydb";
$password = "pass";
 
mysql_connect($host, $user,$password) or die("erreur de connexion au serveur" );
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees" );
 
// Creation et envoi de la requete
$query = "select X,Rue from COORD where (X IN (select max(ABS(4-X)) from COORD))";
$result = mysql_query($query);
 
 
// Recuperation des resultats
while($row = mysql_fetch_row($result)){
$Rue = $row[0];
echo "$Rue
";
}
 
// Deconnexion de la base de donnees
mysql_close();
?>

 





Les bases de données mysql ne semble pas géré les IN entre deux sous requêtes. De même, elles ne suportent pas les alias de tables dans une requête. (tests réalisé avec php)
Voilà d'où proviens ton erreur.

Zebra3 désolé phleup mais j'ai pas de réponse pour le moment :(
par contre Sh@rdar à tort : mysql_fetch_row (ou mysql_fetch_array) est + rapide que mysql_result (c'est même dit dans le manuel de php !)
phleup personne sait ?
phleup je précise une chose,ma requete renvoie aussi une erreur avec phpmyadmin et franchement je vois pas pkoi car g testé la même sur un autre table avec sqlplus et là ça marche...
phleup hmm, ça me paraissait bien tout ça quand je l'ai lu mais...
et bah ça marche pas
g toujours la même erreure au nivo du while : 0 is not a MySQL result indexss
 
avec la premiere méthode :ss
$X = mysql_result("$result",0,"X" );
$Rue = mysql_result("$result",0,"Rue" );
et même erreur sur les 2 lignes
 
:'(
Sh@rdar Alors ta requête est bonn moins le IN comme dit plus haut c'est l'affichage des resultats qui déconne.
 
Fait comme j'ai dit mùais ajout l'affichage des coordonnées en ajoutant les lignes :
 
$X = mysql_result("$result",0,"X" ); (une pour X et une pour Y)
 
ou bien :
 
while (($row=mysql_fetch_array($result))
{
$rue = $row["rue"];
$X = $row["X"];
$Y = $row["Y"];
 
ensuite tu affihce tes valeurs comme tu as envie ;-)

 

phleup oki.
 
en gros g une table avec 3 champs, Rue, X et Y où X et Y sont les coordonnées de l'origine d'une rue sur un plan. (X,Y) est ma clé primaire. je veux aller chercher dans ma table les coordonnées de la rue la plus proche de mon point d'origine (ici g mis X=4 et fo changer le max en min) et qu'il me renvoie la Rue, et ses coordonnées (je me suis juste limité à l'étude de l'abscisse dans ce cas)
 
voilà, j'espère avoir été clair et que tu pourra m'aider :)
Sh@rdar Là je pige plus rien...
 
Ta coordonnée X ne sert que comme argument de sélection non ?
A aucune moment cette valeur est ressortie par la requête comme tu l'as mise....
 
Tu peux pas expliquer complètement ce que tu veux faire stp ?

 

phleup en fait nan ça peut pas marcher ça car je cherche à c qu'il me sorte la Rue et le X associé
Sh@rdar c'est ça qui déconne : $Rue = $row[0]; t'as un champ nommé 0 dans ta table ?
 
fait plutot $rue =$row["rue"];
 
ca devrait aller mieux je pense... mais si ta requête de retourne q'uune ligne fait plutot ca :
 
$rue = mysql_result("$result",0,"Rue" );
 
c plus rapide il me semble :-

 

phleup en fait, g mis un IN au cas ou il y ai plusieurs réponses. avec un = le résultat est le même et il y a bien une entrée dans la table qui correspond à ma requete car la deuxième partie (le second select) renvoie normalement X=0 et donc devrait me donner la rue dont le X correspond à 0
Roswell_ Je pense que c'est juste que ta table n'a aucun enregistrement correspondant à ce que tu lui demande. En tout cas j'ai le meme message quand c'est le cas chez moi.
sinon tu faire ça mais ça ne devrait rien changer:
 
$mysql_link=mysql_connect($host, $user,$password) or die("erreur de connexion au serveur" );ss
...
$result=@mysql_query($query,$mysql_link);
 
le '@' devrait empecher le warning.
Fred999 Déjà, dans la requêtess
 
select X,Rue from COORD where (X IN (select max(ABS(4-X)) from COORD))
 
tu n'as pas besoin d'un IN dans la sous-requête, vu que celle-ci ne te retournera qu'une seule valeur (max). Tu peux employer un '='.
 
Bon, sinon je ne connais pas le PHP et laisse donc la parole aux autres.
phleup voilà, g un souscis avec mon script, à l'executtion, il m' dit que l'erreur se trouve sur la ligne : while($row = mysql_fetch_row($result)) et c'est : "Warning: 0 is not a MySQL result index"
 mais en fait je pense que l'erreure vient de la requete mais je ne voit pas pourquoi. kkun peut-il m'expliquer mon erreure merci
 
 
<?php
 
$host = localhost;ss
$user = "user";
$bdd = "mydb";
$password = "pass";
 
mysql_connect($host, $user,$password) or die("erreur de connexion au serveur" );
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees" );
 
// Creation et envoi de la requete
$query = "select X,Rue from COORD where (X IN (select max(ABS(4-X)) from COORD))";
$result = mysql_query($query);
 
 
// Recuperation des resultats
while($row = mysql_fetch_row($result)){
$Rue = $row[0];
echo "$Rue
";
}
 
// Deconnexion de la base de donnees
mysql_close();
?>

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