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

Langage PHP Discussion :

1065 Query was empty


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 156
    Par défaut 1065 Query was empty
    Bonjour tout le monde,
    Je souhaiterais développer un programme pour la réservation de chauffeurs et lors de la demande de réservation je souhaiterais ne pas accepter les demandes dont les chauffeurs ne sont pas disponibles.
    Pour faire cela, j'ai créé une fonction :
    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
    22
    23
    public function getFree (string $startField, string $endFiled) {
    define('DB_HOST', '127.0.0.1');
    define('DB_NAME', 'test');
    define('DB_USER', 'root');
    define('DB_PWD' , '');
    $pdo    = new PDO('mysql:host='.DB_HOST.'; dbname='.DB_NAME,DB_USER,DB_PWD, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
     
        $start = DateTime::createFromFormat('Y-m-d H:i:s', $this->data[$startField]);
        $end = DateTime::createFromFormat('Y-m-d H:i:s', $this->data[$endFiled]);
     
    $sql = " SELECT * FROM events
          WHERE ( end  BETWEEN '{$start}' AND '{$end}' ) OR ( start <='{$start}' AND end >='{$end}' ) OR ( start >='{$start}' AND end <='{$end}' )
       ";
     
    $sth    = $pdo->prepare($query);
    $sth->execute(); 
    $resultat =  $sth->rowCount();
           if ($resultat != 0) {
            $this->errors[$startField] = "Ce temps est déjà pris";
            return false;
           }
           return true;
       }

    Lors de l'exécution j'ai ce message :
    Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1065 Query was empty
    Quel'qu'un pourrait me dire pourquoi ?
    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    toujours à batailler avec ton planning !
    Regarde ton code : $this->data[$startField], où tu vois data dans ta fonction ?
    Quel format tu attends pour les arguments : $startField et $endFiled. ATTENTION tu as écris $endFiled au lieu de $endField

    Relis-toi autant que tu peux

  3. #3
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
       $start = DateTime::createFromFormat('Y-m-d H:i:s', $this->data[$startField]);
        $end = DateTime::createFromFormat('Y-m-d H:i:s', $this->data[$endFiled]);
     
    $sql = " SELECT * FROM events
          WHERE ( end  BETWEEN '{$start}' AND '{$end}' ) OR ( start <='{$start}' AND end >='{$end}' ) OR ( start >='{$start}' AND end <='{$end}' )
       ";
     
    $sth    = $pdo->prepare($query);
    Aussi, $start et $end sont des objets DateTime, pas des strings, tu ne peux donc pas les insérer comme ça dans une chaîne, tu dois soit utiliser la méthode DateTime::format() pour produire une chaîne au format souhaité, soit directement utiliser $startField et $endField qui sont déjà des strings.

    Le message d'erreur que tu reçois viens du fait que tu as stocké ta requête dans $sql et que tu fais ensuite $sth = $pdo->prepare($query);. De plus quitte à utiliser la méthode PDO::prepare() autant faire vraiment une requête préparée avec des placeholders.

    Bref on te l'a sûrement déjà dit, mais avec quelques var_dump() tu peux voir si tout se passe comme tu l'attends à chaque étape.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 156
    Par défaut
    Exact,
    Bien vu.
    Merci beaucoup

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/01/2019, 21h50
  2. Réponses: 1
    Dernier message: 11/07/2013, 20h51
  3. Réponses: 2
    Dernier message: 22/09/2011, 08h58
  4. Réponses: 1
    Dernier message: 14/01/2008, 17h41
  5. [PEAR] Sigma: "Object of class PEAR_Error could not be converted to string"
    Par onet dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 04/09/2007, 14h31

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