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 :

Erreur "Column not found:" dans requête


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Femme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2023
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 23
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2023
    Messages : 10
    Par défaut Erreur "Column not found:" dans requête
    Bonjour,
    Ca fait un moment que je galère avec une erreur mysql que j'arrive pas à résoudre, ce serait bien sympathique de votre part de me donner un coup de main, et Merci infiniment

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT * FROM Employes,Service,Departement,Affectation,historique WHERE Service.IDService=Affectation.IDService AND Employes.IDEmployes=historique.IDEmployePointages AND Service.IDDepartement=Departement.IDDepartement AND Employes.UIDEmployes=Affectation.IDEmployes AND ActiveEmp!=0 AND Service.IDService=6 AND Departement.IDDepartement=1 AND historique.seances=S2 AND historique.DatePointages BETWEEN '2023-03-05' AND '2023-03-05'

    Erreur PHP :
    Fatal error: Uncaught PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'S2' in 'where clause' in C:\xampp\htdocs\ismagip\control\F_ShowPointage.php:89 Stack trace: #0 C:\xampp\htdocs\ismagip\control\F_ShowPointage.php(89): PDO->query('SELECT DISTINCT...') #1 {main} thrown in C:\xampp\htdocs\ismagip\control\F_ShowPointage.php on line 89

    mon code php :
    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
    24
    25
    //recuperation des valeurs
    $IDDep = $_GET['Dep'] ?? "";
    $IDSer = $_GET['Ser'] ?? "";
    $IDEmp = $_GET['Emp'] ?? "";
    $IDSea = $_GET['Sea'] ?? "";
    $TxtIDDep = $_GET['DepTxt'] ?? "";
    $TxtIDSer = $_GET['SerTxt'] ?? "";
    $TxtIDEmp = $_GET['EmpTxt'] ?? "";
    $TxtIDSea = $_GET["SeaTxt"] ?? "";
    if ($_GET['DateFrom'] ?? "") {
        $DateFrom = new DateTime($_GET['DateFrom'] ?? "");
    }
    if ($_GET['DateTo'] ?? "") {
        $DateTo = new DateTime($_GET['DateTo'] ?? "");
    }
    $DayDiff = $_GET['DayDiff'] ?? "";
     
    $SqlRecherche = null;
    $Resultat = "";
    $diff = null;
     
     
    if (!empty($DateFrom) && !empty($DateTo)) {
        if ($IDEmp == 'T') {
            $SqlRecherche = "SELECT DISTINCT * FROM Employes,Service,Departement,Affectation,historique WHERE Service.IDService=Affectation.IDService AND Employes.IDEmployes=historique.IDEmployePointages AND Service.IDDepartement=Departement.IDDepartement AND Employes.UIDEmployes=Affectation.IDEmployes AND ActiveEmp!=0 AND Service.IDService=".$IDSer." AND Departement.IDDepartement=".$IDDep." AND historique.seances=".$TxtIDSea." AND historique.DatePointages BETWEEN '".$DateFrom->format('Y-m-d')."' AND '".$DateTo->format('Y-m-d')."' ";

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 605
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 605
    Par défaut
    quand vous utilisez des données extérieures dans une requete, il faut utiliser des requetes préparées pour éviter les injections sql :
    https://www.php.net/manual/fr/pdo.pr...statements.php

    cela corrigera votre erreur "colonne inconnue" au passage.

  3. #3
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 315
    Billets dans le blog
    17
    Par défaut
    Column not found: 1054 Unknown column 'S2' in 'where clause'
    Il faudrait commencer par présenter correctement la requête :

    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
    $SqlRecherche = <<<SQL
        SELECT DISTINCT * 
        FROM Employes, Service, Departement, Affectation, historique
        WHERE TRUE
            AND Service.IDService = Affectation.IDService 
            AND Employes.IDEmployes = historique.IDEmployePointages 
            AND Service.IDDepartement = Departement.IDDepartement
            AND Employes.UIDEmployes = Affectation.IDEmployes 
            AND ActiveEmp != 0 
            AND Service.IDService = {$IDSer}
            AND Departement.IDDepartement = {$IDDep}
            AND historique.seances = {$TxtIDSea}
            AND historique.DatePointages BETWEEN '{$DateFrom->format('Y-m-d')}' AND '{$DateTo->format('Y-m-d')}'
        SQL;

    Au moins on comprend un minimum ce qui se passe.

    1. Je ne vois pas de colonne "S2", cela doit provenir d'une variable => Echappe correctement tes variables avec PDO::quote() ou en préparant la requête
    2. Généralement on ne fait pas de SELECT *, surtout s'il y a 4 jointures et qu'on veut un DISTINCT, c'est contre-performant et va probablement fausser le résultat attendu
    3. Depuis 30 ans on écrit les jointures avec INNER JOIN

Discussions similaires

  1. [MySQL] Un problème dans le code PHP
    Par jack_1981 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 31/07/2006, 11h06
  2. [SQL] erreur dans la requette SQL ou dans le code PHP
    Par jack_1981 dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 11/07/2006, 21h21
  3. [PHP-JS] Probleme de javascript dans un code php
    Par stomerfull dans le forum Langage
    Réponses: 3
    Dernier message: 23/01/2006, 09h33
  4. [PHP-JS] Probleme de javascript dans un code php
    Par stomerfull dans le forum Langage
    Réponses: 20
    Dernier message: 12/01/2006, 13h41
  5. Problème avec Between dans un code
    Par Sendo dans le forum Access
    Réponses: 4
    Dernier message: 02/10/2005, 18h44

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