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 :

résultat d'une requête exécutée avec PDO et avec PHPMyAdmin différent [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut résultat d'une requête exécutée avec PDO et avec PHPMyAdmin différent
    Bonjour,

    si j'exécute une requête SQL avec PDO, le fetch me retourne une valeur différente de celle que donne PHPMyAdmin, Pourquoi ?

    Mon code :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
            $date1 = $year.'-'.$month.'-1';
    	$date2 = $year.'-'.$month.'-'.date('t', mktime(0, 0, 0, $month, 1, date('Y')));
     
    	$sql = '
    		SELECT DISTINCT DAY(event_date)
    		FROM calendar_event
    		WHERE event_date BETWEEN :date1 AND :date2';
     
    	$qid = $bdd->prepare($sql);
    	$qid->execute(array(
    		':date1' => $date1,
    		':date2' => $date2,
    	));
     
    	$result = $qid->fetchAll(PDO::FETCH_COLUMN);//var_dump($result);exit();

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- que valent :
    • $date1 ?
    • $date2 ?

    2- quel est le format SQL de :
    • event_date ?

    2- $month.'-1'....
    A priori, j'aurais mis :
    Non ?

  3. #3
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    1- un var_dump de ces 2 variables donne :
    C:\wamp64\www\vhstest031217\includes\calendar.php:16:string '2018-03-01' (length=10)

    C:\wamp64\www\vhstest031217\includes\calendar.php:16:string '2018-03-31' (length=10)

    2-event_date est de type SQL date

    et j'ai remplacé -1 par -01. C'est effectivement plus propre mais ça ne change rien.

  4. #4
    Invité
    Invité(e)
    Par défaut
    OK.

    Et quelle différence entre fetch et PHPMyAdmin ?
    • des lignes en plus ?
    • en moins ?
    • ...?

    Soit plus PRECIS, Laurent.... (dès le départ, ce serait mieux...)

  5. #5
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    Si je décommente le var_dump de la ligne 15, ça donne

    array (size=1)
    0 => int 27

    alors que si j'exécute SELECT DISTINCT DAY(event_date) FROM calendar_event WHERE event_date BETWEEN '2018-03-01' AND '2018-03-31' dans PHPMyAdmin,

    + Options
    DAY(event_date)
    21
    1

  6. #6
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    Je viens d'essayer sans préparer la requête, mais le problème reste :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	$sql2='
    		SELECT DISTINCT DAY(event_date)
    		FROM calendar_event
    		WHERE event_date BETWEEN "'.$date1.'" AND "'.$date2.'"';var_dump($sql2);
    	$qid=$bdd->query($sql2);
     
    	$result=array();
    	$i=0;
    	while($val=$qid->fetch()) $result[$i++]=$val; var_dump($result);exit();

    Au cas où, voici un export de la table :
    Code sql : 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
    22
    -- Structure de la table `calendar_event`
    --
     
    DROP TABLE IF EXISTS `calendar_event`;
    CREATE TABLE IF NOT EXISTS `calendar_event` (
      `event_id` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT,
      `event_date` date NOT NULL,
      `event_time` time NOT NULL,
      `event_name` varchar(100) NOT NULL,
      `event_comment` text NOT NULL,
      `event_allday` tinyint(1) NOT NULL,
      PRIMARY KEY (`event_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1695 DEFAULT CHARSET=latin1;
     
    --
    -- Déchargement des données de la table `calendar_event`
    --
     
    INSERT INTO `calendar_event` (`event_id`, `event_date`, `event_time`, `event_name`, `event_comment`, `event_allday`) VALUES
    (1693, '2018-03-21', '00:00:00', 'bb', 'bb', 0),
    (1694, '2018-03-01', '00:00:00', 'ww', 'ww', 0);
    COMMIT;

  7. #7
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Essaie ceci :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT DAY(event_date) FROM calendar_event WHERE event_date BETWEEN STR_TO_DATE('2018-03-01','%Y-%m-%d') AND STR_TO_DATE('2018-03-31','%Y-%m-%d')

    La différence peut venir du varchar par défaut sur ton apache != du varchar par défaut dans ta base... Une hypothèse qui m'est déjà arrivée sur une problématique légèrement différente...
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  8. #8
    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
    Par défaut
    on ouvre les paris ?
    la base de donnée que tu utilises pour PHP n'est une nouvelle fois pas la même que celle de phpmyadmin.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Invité
    Invité(e)
    Par défaut
    Je suis le pari : Laurent 4ème sur 3 partants dans toutes les courses !

    (oui, je sais, ce n'est pas gentil...)

  10. #10
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par jreaux62 Voir le message

    (oui, je sais, ce n'est pas gentil...)
    oui, mais mon problème, c'est que c'est réaliste...Car Sabotage a eu la bonne intuition (je sais, pas très dur vu que habituel ). Bon, même en pointant la bonne bdd, y a encore d'autres problèmes, mais demain, il fera jour (et je reviendrai pour indiquer la suite).

  11. #11
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    Comme le titre de cette discussion n'a rien à voir avec les autres problèmes, je la clos.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. modifier le résultat d'une requête exécuté par un .bat
    Par int59 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 29/10/2015, 10h31
  2. Afficher le résultat d'une requête avec des côtes
    Par sweet_hell dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/10/2006, 10h32
  3. [Conception] Résultat d'une requête PHP dans un tableau avec lien ?
    Par DjMaC dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/04/2006, 20h37
  4. Pb résultats d'une requête avec ou sans Recordset
    Par fredeau dans le forum Access
    Réponses: 3
    Dernier message: 24/04/2006, 14h07
  5. Réponses: 3
    Dernier message: 16/10/2005, 11h53

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