Erreur requete SQL

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 : Erreur requete SQL

Re: Erreur requete SQL

par stealth35 » 31 janv. 2010, 18:39

et puis array_push c'est pas bien de l'utilisé pour une seule valeur, c'est plus otimisé d'utilisé $array[]

sinon pour la valeur, un coup de sprintf (avec %d) est c'est reglé pas besion de faire de fonction, sauf si on veux un message spécial

Re: Erreur requete SQL

par Aureusms » 31 janv. 2010, 18:33

Moi ce que je fais souvent c'est de tester la valeur avant
Personnellement, je ne suis pas convaincu de l'intérêt de ce test... en effet, plus le nombre d'enregistrements de la table va être important, plus ce test va être lourd et long (bon ok, ça se compte en milisecondes ;)), alors que protéger ta variable se fait simplement et si l'info n'existe pas, tu le sais très rapidement :
D'abord tu fais que toujours m'embetter |(X

Re: Erreur requete SQL

par Superpilou » 31 janv. 2010, 14:52

La ta variable d'après le nom est un entier, donc on peut utiliser is_int() qui vérifiera si la valeur saisit est un entier.
<?php

if(is_int($val))
 {
//il se passe ca

}
else
{
//il se passe ca
}
?>
Ainsi on éviter les injections.

Re: Erreur requete SQL

par Ryle » 31 janv. 2010, 13:49

Moi ce que je fais souvent c'est de tester la valeur avant
Personnellement, je ne suis pas convaincu de l'intérêt de ce test... en effet, plus le nombre d'enregistrements de la table va être important, plus ce test va être lourd et long (bon ok, ça se compte en milisecondes ;)), alors que protéger ta variable se fait simplement et si l'info n'existe pas, tu le sais très rapidement :
<?php
if (isSet($_GET['id_page'])) {
   // traitement pour protéger la variable avec real_escape, htmlentities et tout ce dont vous avez besoin
   $idPage = protegeMaVariable($_GET['id_page']);

   // Nota : si le champ id_page est numérique, il ne faut pas d'apostrophes pour délimiter la valeur
   // mysql les tolèrera, mais pas les autres base de données. C'est donc une bonne habitude à prendre
   $requete = "SELECT ... FROM commentaires WHERE id_page=" . $idPage . " ORDER BY ID DESC LIMIT 0,10";
   $resultat_sql = mysql_query ($requete);
   while ($resultat = mysql_fecth_assoc($resultat_sql)) { // on peut aisément tester s'il y a un résultat
      //ok suite du script
   }
   else {
      // pas Ok (essai de piratage ou erreur de l'utilisateur) : message d'erreur ou script par défaut
   }
}
?>
Ca ne reste qu'un avis personnel :)

Re: Erreur requete SQL

par Aureusms » 31 janv. 2010, 13:25

Moi ce que je fais souvent c'est de tester la valeur avant :
<?php
$requete = "SELECT id_page FROM commentaires";
$resultat_sql = mysql_query ($requete);
$tab_id_page = array();
while ($resultat = mysql_fecth_row($resultat_sql))
{
  array_push($tab_id_page,$resultat[0]);
}

if (in_array($_GET['id_page'],$tab_id_page))
{
  //ok suite du script
}
else
{
 // pas Ok (essai de piratage ou erreur de l'utilisateur) : message d'erreur ou script par défaut
}
?>

Re: Erreur requete SQL

par Aureusms » 31 janv. 2010, 13:19

Petit conseil : protège ton $_GET['id_page'] sinon attention aux injections sql...

Re: Erreur requete SQL

par Patriboom » 31 janv. 2010, 04:59

Simple erreur de syntaxe: vérifie tes guillemets ( ") et apostrophes ( ' ), rectifie leurs positions et ça devrait fonctionner

Re: Erreur requete SQL

par stealth35 » 31 janv. 2010, 03:09

simple erreur de syntax
$reponse = mysql_query("SELECT * FROM commentaires WHERE id_page='" . $_GET['id_page'] . "' ORDER BY ID DESC LIMIT 0,10");

Re: Erreur requete SQL

par Zoom2mlk » 31 janv. 2010, 01:26

Tout d'abord merci de repondre =), voici le message d'erreur :
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /homepages/8/d314637936/htdocs/includes/commentairesv2.php on line 36

Et pour la variable $id_page, je suis sur de ce qu'elle contient car je l'utilise egalement pour enregistrer le commentaire dans la BDD.

Re: Erreur requete SQL

par Ryle » 31 janv. 2010, 01:21

Et quel est ce message d'erreur ? (on a encore rien trouvé de mieux pour identifier l'origine d'un problème :))

As-tu vérifié ce que contenait ta variable $_GET['id_page'] ? (vu qu'avec une valeur saisie manuellement ça marchait, y a de grande chance que le problème vienne de là ;))

Erreur requete SQL

par Zoom2mlk » 31 janv. 2010, 01:06

Bonjour a tous :) ,
J'ai un probleme avec mon script de commentaire, dans la partie qui affiche les commentaire, la voici :
$reponse = mysql_query("SELECT * FROM commentaires WHERE id_page="' . $_GET['id_page'] . '" ORDER BY ID DESC LIMIT 0,10");
A l'affichage de ma page, on me dit qu'il y a une erreur dans cette ligne, mais quel est cet erreur ? Aidez moi svp :cry: !

A noter qu'avant je n'utilisais pas le $_GET['id_page'], j'ecrivais l'id_page manuellement et ca marchait tres bien !