IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Uncaught exception 'PDOException'


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 907
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 907
    Points : 411
    Points
    411
    Par défaut Uncaught exception 'PDOException'
    Bonjour à tous,

    j'ai l'erreur suivante :

    [06-Mar-2016 13:36:19 UTC] PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '-10, 10' at line 6' in /home/flatforswap/public/liste.php:1627
    Stack trace:
    #0 /home/flatforswap/public/liste.php(1627): PDOStatement->execute(Array)
    #1 {main}
    thrown in /home/flatforswap/public/liste.php on line 1627
    [06-Mar-2016 13:36:37 UTC] PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '-10, 10' at line 6' in /home/flatforswap/public/liste.php:1627
    Stack trace:
    #0 /home/flatforswap/public/liste.php(1627): PDOStatement->execute(Array)
    #1 {main}
    thrown in /home/flatforswap/public/liste.php on line 1627

    cela correspond à cette ligne de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sqla->execute(array($continent, $ad_pays, $valeur_valide));
    la requête entière est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // on sélectionne tous les champs nécessaire à l'affichage
     
    			$sqla = $db->prepare("SELECT A.id_adh, A.id_vil, B.id_vil, B.id_pay, B.ville_fr, C.id_pay, C.id_con, C.pays_".$lang.", D.cont_".$lang."
    			FROM flatforswap_adherent A
    			INNER JOIN flatforswap_ville B ON A.id_vil = B.id_vil
    			INNER JOIN flatforswap_pays C ON B.id_pay = C.id_pay 
    			INNER JOIN flatforswap_continent D ON D.id_con = C.id_con
    			WHERE D.cont_".$lang."=? and C.pays_".$lang."=? AND A.valide =? ORDER BY A.id_adh ASC limit $start, $epp");
    			$sqla->execute(array($continent, $ad_pays, $valeur_valide));
    			}
    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    A vue de nez ton $start vaut -10, tu as donc un problème dans ta boucle de pagination.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 907
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 907
    Points : 411
    Points
    411
    Par défaut
    Bonjour, désolé du retard, je déterre ce problème car j'ai remarqué que ça se produit uniquement lorsque ma deuxième page est la dernière page...
    C'est pour ça que cette erreur mon cas arrive rarement
    Voici le code de ma pagination :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    $total = $row[0];
    		/* Déclaration des variables */
    		$epp = 10; // nombre d'entrées à afficher par page (entries per page)
    		$countp = ceil($total/$epp); // calcul du nombre de pages $countp (on arrondit à l'entier supérieur avec la fonction ceil() )
     
    		/* Récupération du numéro de la page courante depuis l'URL avec la méthode GET */
    		if(!isset($_GET['p']) || !is_numeric($_GET['p']) ) // si $_GET['p'] n'existe pas OU $_GET['p'] n'est pas un nombre (petite sécurité supplémentaire)
    			$current = 1; // la page courante devient 1
    		else
    		{
    			$page = intval($_GET['p']); // stockage de la valeur entière uniquement
    			if ($page < 1) $current=1; // cas où le numéro de page est inférieure 1 : on affecte 1 à la page courante
    			elseif ($page > $countp) $current=$countp; //cas où le numéro de page est supérieur au nombre total de pages : on affecte le numéro de la dernière page à la page courante
    			else $current=$page; // sinon la page courante est bien celle indiquée dans l'URL
    		}
     
    		/* $start est la valeur de départ du LIMIT dans notre requête SQL (est fonction de la page courante) */
    		$start = ($current * $epp - $epp);
     
    		$qry = "SELECT p_title FROM posts LIMIT $start, $epp";

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    combien vaut $start ?
    a priori -10, donc la question suivante est combien vaut $current ?
    a priori 0, donc la question suivante sera combien vaut $total ?

    Bref il faut remonter toute la chaine de traitement.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. [MySQL] Fatal error: Uncaught exception PDOException
    Par momototo38 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 27/08/2015, 19h33
  2. Uncaught exception 'PDOException'
    Par molinadiaz dans le forum Langage
    Réponses: 2
    Dernier message: 23/03/2012, 10h36
  3. [MySQL] Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000
    Par okoweb dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 03/12/2011, 08h32
  4. Fatal error: Uncaught exception 'PDOException'
    Par mina13 dans le forum Zend_Db
    Réponses: 2
    Dernier message: 09/06/2011, 09h24
  5. [MySQL] Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002]
    Par -Fly- dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/04/2011, 11h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo