Impossible d'attaquer une requete avec mysql_fetch_array

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Impossible d'attaquer une requete avec mysql_fetch_array

par Vikchill » 29 janv. 2007, 11:03

Et pourtant, c'est bien de là que vient le problème. Le point virgule à la fin de la ligne indique que l'instruction est terminée. Il rentre donc bien dans le test du while, mais ne fait rien puisqu'il n'y a pas d'instruction accolée.
Puis il poursuit le code, trouve les accolades (qu'il ignore dans ce cas, soit dit en passant) exécute le echo, n'affiche rien pour $valeur['fichier'] puisqu'il est en dehors du while, et retourne donc juste le <br /> :)
J'avoue que plus le temps passe, plus j'ai l'impression que ça pourrait bien être l'explication de mon problème... J'espère vraiment que c'est pas ça tellement c'est stupide comme erreur, j'aime pas "déranger" les gens pour ce genre de choses, mais je ne pourrais rien confirmer avant ce soir.

En tout cas merci à tous, je vous tiens au courant très vite.

[EDIT]Honte sur moi...

par Ryle » 29 janv. 2007, 10:54

Euh, effectivement, mais je crois que ça viens du copier/coller, j'ai enlever certaines lignes en commentaires qui étaient inutiles. Ca reste à confirmer, et je m'en voudrais beaucoup si c'était ça, mais je ne crois pas que ça soit ça car je rentre dans le while pour en sortir immédiatement: le "<br />" en fin de ligne apparaît une fois, sans rien devant lui.
Et pourtant, c'est bien de là que vient le problème. Le point virgule à la fin de la ligne indique que l'instruction est terminée. Il rentre donc bien dans le test du while, mais ne fait rien puisqu'il n'y a pas d'instruction accolée.
Puis il poursuit le code, trouve les accolades (qu'il ignore dans ce cas, soit dit en passant) exécute le echo, n'affiche rien pour $valeur['fichier'] puisqu'il est en dehors du while, et retourne donc juste le <br /> :)

par Vikchill » 29 janv. 2007, 10:14

Merci à vous de prendre un peu de votre temps pour m'aider :)
Pourquoi ne pas utiliser mysql_fetch_assoc($resultat) plutôt que mysql_fetch_array($resultat, MYSQL_ASSOC) ?
J'avais essayé avec mysql_fetch_assoc, sans plus de succès.
Ensuite, il est préférable de vérifier que la requête fonctionne correctement, grâce par exemple à
$resultat = mysql_query($requete) or die("Erreur : " . mysql_error());
Je suis sûr de ma requête, elle a été testée et fonctionne bien. D'ailleurs, avec mysql_result je parviens à attaquer mon jeu de données.

Tu as un point virgule de trop sur la ligne du while()
et un double point virgule pour le echo...
Euh, effectivement, mais je crois que ça viens du copier/coller, j'ai enlever certaines lignes en commentaires qui étaient inutiles. Ca reste à confirmer, et je m'en voudrais beaucoup si c'était ça, mais je ne crois pas que ça soit ça car je rentre dans le while pour en sortir immédiatement: le "<br />" en fin de ligne apparaît une fois, sans rien devant lui.
Il y a eu des promo sur les points virgule ? :lol:
:oops:

par Truc » 29 janv. 2007, 01:11

Tu as un point virgule de trop sur la ligne du while()
et un double point virgule pour le echo...

Il y a eu des promo sur les points virgule ? :lol:

par Ultim4T0m » 28 janv. 2007, 23:29

Bonsoir,

Pourquoi ne pas utiliser mysql_fetch_assoc($resultat) plutôt que mysql_fetch_array($resultat, MYSQL_ASSOC) ?

Ensuite, il est préférable de vérifier que la requête fonctionne correctement, grâce par exemple à
$resultat = mysql_query($requete) or die("Erreur : " . mysql_error());

Impossible d'attaquer une requete avec mysql_fetch_array

par Vikchill » 28 janv. 2007, 21:07

Bonjour,

j'ai sauté le peu il y a peu vers Linux, ça n'a probablement rien à voir mais je ne comprends pas pourquoi ce code ne me retourne rien:
$requete = "SELECT fichier FROM documentor";
$resultat = mysql_query($requete);
while($valeur = mysql_fetch_array($resultat, MYSQL_ASSOC));
        {
        echo $valeur['fichier'].'<br />';;
        }
Alors que plus loin, ceci fonctionne:
$nlignes = mysql_num_rows($resultat);
$div1 .= 'Il devrait y avoir '.$nlignes.' lignes.<br />';
$i = 0;
while($i<$nlignes)
      {
      $div1 .= mysql_result($resultat, $i, "nom").'<br />';
      $i++;
      }
Quelqu'un pourrait-il me donner une piste?