Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité régulier
    Inscrit en
    avril 2011
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : avril 2011
    Messages : 62
    Points : 9
    Points
    9

    Par défaut erreur de syntaxe requête préparé et condition LIMIT

    Bonjour a tous,
    J'ais un petit soucis de syntaxe que je n'arrive pas a résoudre sur une requête.

    Erreur retournée : 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 ''0','12'' at line 1

    code :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    $dbr_add_cat = $connexion->prepare("SELECT id, titre, titre_url, contenu, cat, img_screen FROM fiche WHERE cat=:cat AND valid=:valid ORDER BY id  LIMIT :page,:limit");
    		$dbr_add_cat -> bindValue(cat, $cat['id']);
    		$dbr_add_cat -> bindValue(valid, 1);
    		$dbr_add_cat -> bindvalue(page, $page_calc);
    		$dbr_add_cat -> bindvalue(limit, 12);
    		$dbr_add_cat -> execute();
    		$fiches = array();
    		while($cat_add = $dbr_add_cat->fetch())
    			{
    			$dbr_cat = $connexion->prepare("SELECT id, url, images, nom FROM categories WHERE id=:id");
    			$dbr_cat -> bindValue( id, $cat_add['cat']);
    			$dbr_cat -> execute();
    			$cat = $dbr_cat -> fetch();
     
    			$cat_add['id'];
    			$cat_add['titre'];
    			$cat_add['titre_url'];
    			$cat_add['contenu'];
    			$cat_add['cat'];
    			$cat_add['img_screen'];
    			$cat_add['cat_url'] = $cat['url'] ;
    			$cat_add['cat_images'] = $cat['images'];
    			$cat_add['cat_nom'] = $cat['nom'];
    			$fiches[] = $cat_add;	
    			}

  2. #2
    Modérateur

    Inscrit en
    septembre 2010
    Messages
    7 957
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 7 957
    Points : 9 498
    Points
    9 498

    Par défaut

    rajoute en 3eme attribut PDO::PARAM_INT, pour page et limit

    par contre ton code est pas dutout optimisé, faut faire des jointures c'est fait pour ça les SGDB (de plus que ta requête est dans la boucle, ce qui n'a pas dans sens pour une requête préparée)

  3. #3
    Membre émérite Avatar de redoran
    Homme Profil pro Redouane Hamadouche
    Développeur-Amateur
    Inscrit en
    juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Nom : Homme Redouane Hamadouche
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : juin 2010
    Messages : 1 346
    Points : 881
    Points
    881

    Par défaut

    Salam ; pour les bindvalue: faut ajouté les PDO:: PARAM_... a tous les paramètres.
    exemple var : integer
    Code :
    $req->bindValue(':var', $var, PDO::PARAM_INT);
    pour les autres faut voir documentation http://php.net/manual/fr/pdostatement.bindvalue.php

    en plus une requête préparé de type select dans une boucle
    faut suivre conseille de stealth35

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •