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 de syntax sql


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 187
    Par défaut erreur de syntax sql
    bonjour,
    voilà j'ai ce message d'erreur :

    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 'AND ordreProduits > 1' at line 4 ) 1
    et voici la requète
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT COUNT(*) AS nbEntrees
    FROM produits
    WHERE idCategorieProduits = $ancienIdCategorieProduits
    AND ordreProduits > $ancienOrdreProduits
    serais-je tout simplement parce que je n'ai pas encore de produit qui ont ordreProduits > 1, car j'ai qu'un produit
    mais dans ce cas le count derait quand meme compter et renvoyer 0 ? non?
    là je vois pas , merci

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Le message indique où se trouve l'erreur : juste avant AND ordreProduits > 1.

    La cause probable est que votre variable $ancienIdCategorieProduits n'est pas valorisée. Vérifiez le en faisant un echo de votre de requête dans le programme PHP avant sa soumission à MySQL.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 187
    Par défaut
    comment sais tu que c'est avant le AND
    moi ce que j'ai compris, c'est que c'est la ligne 4 ?
    bon je vérifie pour la variable

    merci

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    comment sais tu que c'est avant le AND
    Parce que quand MySQL dit "near" dans ce type de message d'erreur de syntaxe, il faut chercher juste avant ce qui est mentionné après "near".
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 187
    Par défaut
    aaah pas faux, merci

    sinon en effet ma variable est null
    pourtant dans ma bdd, mon champ n'est pas null mais le chiffre "0" y est enregistré
    j'aimerai qu'il soit considéré comme une valeur et non comme null
    car de temps en temps j'ai besoin de lui faire enregistrer la valeur "0"
    comment faire changer dans ma bdd la valeur par defaut qui est mise est en "aucune"
    dois-je mettre null ou tel que défini,
    sachant que ce champ est un mediumint, en unsigned
    merci

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Ben fais voir ton code PHP qui précède la requête alors.

    En SQL, pour éviter un résultat NULL pour une colonne renvoyée par la requête, il faut utiliser COALESCE qui renvoie le premier argument non nul :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COALESCE(NULL, 'quelque chose')
    => Renvoie 'quelque chose'.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 187
    Par défaut
    il n'est pas possible, simplement d'enregistré un 0 dans un int et de le recupérer via une requete?
    si il voit un 0 il considère null?
    merci

  8. #8
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Tant que tu ne montreras pas ton code et la structure des tables interrogées, on ne pourra pas te répondre efficacement.

    Il est évident que si un zéro est enregistré dans une colonne, la requête va retourner zéro. Si par contre la colonne est à NULL (et c'est pas bien de laisser une bande de NULL envahir la BDD !), ben la requête retournera NULL, sauf en utilisant COALESCE.

    Mais une requête peut aussi retourner un NULL en cas de jointure externe et, là encore, COALESCE permet d'éviter de récupérer un NULL.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 187
    Par défaut
    j'ai fait les tests quand dans idCategorieProduits
    j'enregistre par 24 il veut bien ensuite grace a la requete suivante me le renvoyer et me l'afficher, mais pas quand j'ai enregistré 0 il me renvoi null et ne m'affiche donc rien ?
    encore merci

    alors que si j'ai enregitré 0 il ne me renvoi null

    bout requete et 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
    $idProduits = intval($_GET['idProduits']); // si un id existe je récupére sa valeur.	intval() renvois un entier ou en cas d'echec 0 
     
    $reponse = $bdd->query("SELECT *
    						FROM produits
    						LEFT JOIN categorie_produits
    						ON produits.idCategorieProduits = categorie_produits.idCategorieProduits
    						LEFT JOIN marque_produits
    						ON produits.idMarqueProduits = marque_produits.idMarqueProduits
    						WHERE produits.idProduits=$idProduits
    						") or die(print_r($bdd->errorInfo()));  //on recupére les données correspondant a l'id en question
     
    $donnees = $reponse->fetch();
    {
    	$idCategorieProduits = htmlspecialchars($donnees['idCategorieProduits']);
    	if ($idCategorieProduits == NULL)
    	{
    		echo'idCategorieProduits null= '.$idCategorieProduits.'<br />';
    	}
    	else
    	{
    		echo'idCategorieProduits non null= '.$idCategorieProduits.'<br />';
    	}
    }
    voici donc la strucuture de ma 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
    CREATE TABLE IF NOT EXISTS `produits` (
      `idProduits` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
      `nomProduits` varchar(100) NOT NULL,
      `refProduits` varchar(20) NOT NULL,
      `idCategorieProduits` mediumint(8) unsigned NOT NULL,
      `idMarqueProduits` varchar(30) NOT NULL,
      `prixProduits` decimal(7,2) DEFAULT NULL,
      `descriptionProduits` text NOT NULL,
      `idEtiquettes` mediumint(10) unsigned NOT NULL,
      `publierEtiquettesProduits` tinyint(1) NOT NULL,
      `afficherAncienPrixProduits` tinyint(1) NOT NULL,
      `ancienPrixProduits` decimal(7,2) unsigned DEFAULT NULL,
      `dateCreationProduits` datetime NOT NULL,
      `dateModifProduits` datetime NOT NULL,
      `metaTitreProduits` varchar(130) NOT NULL,
      `metaDescriptionProduits` varchar(150) NOT NULL,
      `publierProduits` tinyint(1) NOT NULL,
      `ordreProduits` mediumint(8) unsigned NOT NULL,
      `publierProduitsPageAccueil` tinyint(1) NOT NULL,
      `corbeilleProduits` tinyint(1) NOT NULL,
      PRIMARY KEY (`idProduits`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=456 ;

  10. #10
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    1) Évite de relancer la guerre des étoiles !

    2)
    j'enregistre par 24 il veut bien ensuite grace a la requete suivante me le renvoyer et me l'afficher, mais pas quand j'ai enregistré 0 il me renvoi null et ne m'affiche donc rien ?
    idCategorieProduit est une clé étrangère référençant l'identifiant vraisemblablement de la table categorie_produits ou un nom de ce genre. As-tu une catégorie ayant pour id 0 ?

    3) Écris ton code de cette façon :
    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
    26
    27
    28
    29
    $idProduits = intval($_GET['idProduits']); // si un id existe je récupére sa valeur.	intval() renvoie un entier ou en cas d'echec 0 
     
    $sql = "
    	SELECT -- les colonnes nécessaires et pas étoile !
    	FROM produits p
    	LEFT JOIN categorie_produits cp ON p.idCategorieProduits = cp.idCategorieProduits
    	LEFT JOIN marque_produits mp ON p.idMarqueProduits = mp.idMarqueProduits
    	WHERE p.idProduits = $idProduits 
    ";
     
    // pour tester le vrai contenu de la requête SQL
    echo $sql;
    exit;
    // fin tester
     
    $reponse = $bdd->query("$sql") or die(print_r($bdd->errorInfo()));  //on recupére les données correspondant a l'id en question
     
    $donnees = $reponse->fetch();
    {
    	$idCategorieProduits = htmlspecialchars($donnees['idCategorieProduits']);
    	if ($idCategorieProduits == NULL)
    	{
    		echo'idCategorieProduits null= '.$idCategorieProduits.'<br />';
    	}
    	else
    	{
    		echo'idCategorieProduits non null= '.$idCategorieProduits.'<br />';
    	}
    }
    Teste ensuite la requête directement dans phpMyAdmin ou ton outil favori équivalent.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 187
    Par défaut
    en effet dna ma table categorie_produits, je n'ai pas de catégorie ayant comme id 0,
    de toute facon je crois que c'est impossible de mettre une id a zero
    tu crois que ca pourrais venir de là, il n'arrive pas a faire la jointure et il renvoi null ???

    voici le vrai contenu de la requête SQL

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT(*) AS nbEntrees FROM produits WHERE idCategorieProduits = AND ordreProduits > 2

    encore merci

  12. #12
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    voici le vrai contenu de la requête SQL
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT(*) AS nbEntrees FROM produits WHERE idCategorieProduits = AND ordreProduits > 2
    Tu vois bien qu'il manque quelque chose après idCategorieProduits = !
    C'est donc la variable PHP qui n'est pas valorisée.

    Mais cette requête n'est pas celle que tu donnais dans tes précédents messages !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 187
    Par défaut
    oui en effet ce n'est pas la meme que la précèdante,
    mais bien la meme qu'au tout début
    en fait je savais déjà que idCategorieProduits était "null"
    alors que dans la bdd est affiché "0" et non pas "null"
    moi ce que je ne comprend pas c'est pourquoi il ne me renvoi pas 0 ?

    - peut etre cela vient aussi de l'enregistrement de ce 0 , car on ne peut etre pas enregistré un 0 dans un champ en "mediumint", et "unsigned"?
    - ou alors un 0 est égal a null quand je demande a l'extraire de la bdd et a l'afficher dans mon code php?

    pourtant zero est bien enregistré dans ma bdd pour idCategorieProduits

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    --
    -- Structure de la table `produits`
    --
     
    CREATE TABLE IF NOT EXISTS `produits` (
      `idProduits` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
      `nomProduits` varchar(100) NOT NULL,
      `refProduits` varchar(20) NOT NULL,
      `idCategorieProduits` mediumint(8) unsigned NOT NULL,
      `idMarqueProduits` varchar(30) NOT NULL,
      `prixProduits` decimal(7,2) DEFAULT NULL,
      `descriptionProduits` text NOT NULL,
      `idEtiquettes` mediumint(10) unsigned NOT NULL,
      `publierEtiquettesProduits` tinyint(1) NOT NULL,
      `afficherAncienPrixProduits` tinyint(1) NOT NULL,
      `ancienPrixProduits` decimal(7,2) unsigned DEFAULT NULL,
      `dateCreationProduits` datetime NOT NULL,
      `dateModifProduits` datetime NOT NULL,
      `metaTitreProduits` varchar(130) NOT NULL,
      `metaDescriptionProduits` varchar(150) NOT NULL,
      `publierProduits` tinyint(1) NOT NULL,
      `ordreProduits` mediumint(8) unsigned NOT NULL,
      `publierProduitsPageAccueil` tinyint(1) NOT NULL,
      PRIMARY KEY (`idProduits`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=461 ;
     
    --
    -- Contenu de la table `produits`
    --
     
    INSERT INTO `produits` (`idProduits`, `nomProduits`, `refProduits`, `idCategorieProduits`, `idMarqueProduits`, `prixProduits`, `descriptionProduits`, `idEtiquettes`, `publierEtiquettesProduits`, `afficherAncienPrixProduits`, `ancienPrixProduits`, `dateCreationProduits`, `dateModifProduits`, `metaTitreProduits`, `metaDescriptionProduits`, `publierProduits`, `ordreProduits`, `publierProduitsPageAccueil`) VALUES
    (459, 'produit1', '', 0, '1', '0.00', '', 1, 0, 0, '0.00', '2012-12-09 11:17:12', '2012-12-09 11:17:12', '', '', 1, 2, 0),
    (460, 'produit2', '', 0, '1', '0.00', '', 1, 0, 0, '0.00', '2012-12-09 11:17:24', '2012-12-09 11:17:24', '', '', 1, 1, 0);

  14. #14
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Si tu as un zéro dans une colonne, il est évident qu'une requête sur cette colonne donnera zéro, pas NULL !

    Vérifie ton code PHP qui ne doit pas valoriser la variable utilisée dans la requête. Fais un echo de la variable avant la requête pour t'en convaincre.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 187
    Par défaut
    c'est bon je viens de trouver, c'est parce que dans ma table categorie_produits mon idCategorieProduits de valeur 0 n'existe, pas car c'est une valeur que je mets par defaut dans mon code php, la requete n'arrivais pas la trouver et me renvoyais null,

    j'ai donc changé la requete comme ceci :
    pour qu'il me prenne le produits.idCategorieProduits
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT *, produits.idCategorieProduits AS idCategorieProduits2
    FROM produits
    LEFT JOIN categorie_produits
    ON produits.idCategorieProduits = categorie_produits.idCategorieProduits
    LEFT JOIN marque_produits
    ON produits.idMarqueProduits = marque_produits.idMarqueProduits
    WHERE produits.idProduits=$idProduits
    puis fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    $idCategorieProduits = $donnees['idCategorieProduits2'];
    ?>

    encore merci pour tout

  16. #16
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Avec ton horrible SELECT *, tu ramènes toutes les colonnes de toutes les tables figurant dans la requête. Comme tu as une jointure sur l'égalité de deux colonnes qui s'appellent "idCategorieProduits", la requête renvoie donc deux colonnes portant ce nom. Comme tu as une jointure externe, pour les produits qui n'ont pas d'idCategorieProduits correspondant dans la table categorie_produits, la deuxième colonne idCategorieProduits provenant de la table categorie_produits affiche NULL dans le résultat de la requête.
    Et il est possible, voire probable, que PHP choisisse justement cette colonne quand tu appelles $donnees['idCategorieProduits'].

    Moralité, bis repetita :
    Il vaut mieux éviter la guerre des étoiles !
    CQFD !

    En l'occurrence, ici tu n'as apparemment besoin que de la colonne idCategorieProduits alors ne ramène que produits.idCategorieProduits. Si la catégorie de tous les produits sans catégorie sont à zéro, ta requête renverra cette fois zéro et non pas NULL.

    J'ajoute que pour tester NULL en PHP, il faut le triple égal.

    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
    26
    27
    28
    29
    30
    31
    $idProduits = intval($_GET['idProduits']); // si un id existe je récupére sa valeur.	intval() renvois un entier ou en cas d'echec 0
    $sql = "
    	SELECT p.idCategorieProduits
    	FROM produits
    	WHERE produits.idProduits=$idProduits
    ";
     
    //pour tester le vrai contenu de la requête SQL
    //echo $sql;
    //exit;
    //fin tester
     
    $reponse = $bdd->query("$sql") or die(print_r($bdd->errorInfo()));
    $donnees = $reponse->fetch();
    {
     
    	$idCategorieProduits = $donnees['idCategorieProduits'];
     
    	if ($idCategorieProduits == 0)
    	{
    		echo'idCategorieProduits zero = '.$idCategorieProduits.'<br />';
    	}
    	if (NULL === $idCategorieProduits)
    	{
    		echo'idCategorieProduits null = '.$idCategorieProduits.'<br />';
    	}
    	else
    	{
    		echo'idCategorieProduits non null= '.$idCategorieProduits.'<br />';
    	}
    }
    EDIT :
    Apparemment, tu as compris avant que j'aie fini de taper ma réponse. Mais tu appliques toujours mal avec ton horrible SELECT * !
    Mes explications ci-dessus sont donc toujours valables.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. Erreur de syntaxe SQL
    Par Ismaël(l) dans le forum Langage SQL
    Réponses: 2
    Dernier message: 10/05/2007, 09h19
  2. [MySQL] Jointure : erreur de syntaxe SQL
    Par kawther dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 26/03/2007, 17h25
  3. erreur de syntaxe sql dans vba
    Par @rkane dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 12/12/2006, 18h23
  4. erreur de syntaxe SQL
    Par michka999 dans le forum Requêtes
    Réponses: 9
    Dernier message: 29/08/2006, 16h52
  5. [SQL] Erreur de syntaxe SQL
    Par gregius dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 08/08/2006, 19h10

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