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 :

Requête SQL à l'intérieur du code PHP


Sujet :

PHP & Base de données

  1. #1
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Par défaut Requête SQL à l'intérieur du code PHP
    bonjour quelu'un peut m'expliquer cette requete ?

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT s.* FROM (select @p1:='" . $a . "' p) parm ,client s WHERE  id_client = '" . $idc . "' ")

    surtout ce qui est entre les parenthèse

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 681
    Par défaut
    là vous nous montrez une morceau de code qui construit une requête.
    si vous voulez une information sur une requête il faudrait nous montrer la requête entière et créer la discussion dans le forum correspondant à la base de données utilisée.

  3. #3
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Par défaut
    DESOLEE la requete est claire pour moi ce que je n'ai pas compris c'est : FROM (select @p1:='" . $a . "' p) parm

  4. #4
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (select @p1:='" . $a . "' p)
    Là, il s'agit manifestement d'une requête SELECT imbriquée (SQL Sous-requête) dans un autre SELECT.
    De là à savoir exactement ce que ça fait...

    A priori, ça sélectionne une table définie par $a (?), et à laquelle on attribue l'alias "p".
    du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (SELECT @p1:=XXXX AS p)
    CELA DIT... il n'y a pas de virgule avant " parm ," ce qui est étrange...

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    Citation Envoyé par jreaux62 Voir le message
    CELA DIT... il n'y a pas de virgule avant " parm ," ce qui est étrange...
    Vieux style de jointure. parm est l'alias de la table temporaire retournée par la sous-requête.

    A+.

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 330
    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 330
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par Msysteme Voir le message
    DESOLEE la requete est claire pour moi ce que je n'ai pas compris c'est : FROM (select @p1:='" . $a . "' p) parm
    Tu affectes la valeur de la variable PHP $a à la variabke SQL @p1
    Selon ce qu'on voit ça ne sert à rien, on aurait pu mettre $a directement dans le SELECT principal

  7. #7
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Par défaut
    mais apparemment client c'est une vue, si c'est le cas cela veut dire quoi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    /*!50001 DROP TABLE IF EXISTS `client`*/;
    /*!50001 DROP VIEW IF EXISTS `client`*/;
    /*!50001 SET @saved_cs_client          = @@character_set_client */;
    /*!50001 SET @saved_cs_results         = @@character_set_results */;
    /*!50001 SET @saved_col_connection     = @@collation_connection */;
    /*!50001 SET character_set_client      = utf8mb4 */;
    /*!50001 SET character_set_results     = utf8mb4 */;
    /*!50001 SET collation_connection      = utf8mb4_unicode_ci */;
    /*!50001 CREATE ALGORITHM=UNDEFINED */
    /*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
    /*!50001 VIEW `client` AS select............= `P1`())..
    le P1 ca doit etre ou ?

    je bloque...

  8. #8
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 330
    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 330
    Billets dans le blog
    17
    Par défaut
    mais apparemment client c'est une vue
    Oui on a une vue qui s'appelle "client".

    Je ne sais pas ce que signifie ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /*!50001 VIEW `client` AS select............= `P1`())..
    ... et je ne suis pas sûr qu'il y ait un rapport entre @p1 et `P1`(). Il faudrait un peu plus que des bouts de SQL pour voir ce qui se trame.

    le P1 ca doit etre ou ?
    Je ne comprends pas la question.

  9. #9
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Par défaut
    P1 c'est une function dans la BD

    au niveau du code php j'ai :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    select s.* from (select @p1:='" . $h. "' p) parm ,viewclient s WHERE  id_client = '" . $user->id_client . "'

    au niveau du view ily a :

    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
    --
    -- Final view structure for view `client`
    --
     
    /*!50001 DROP TABLE IF EXISTS `client`*/;
     
    /*!50001 CREATE ALGORITHM=UNDEFINED */
    /*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
    /*!50001 VIEW `client` AS select '' ....idColi` = `P1`()) */;
    /*!50001 SET character_set_client      = @saved_cs_client */;
    /*!50001 SET character_set_results     = @saved_cs_results */;
    /*!50001 SET collation_connection      = @saved_col_connection */;
     
    --

    donc a votre avis la fonction P1 comment ca va etre définie

  10. #10
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 330
    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 330
    Billets dans le blog
    17
    Par défaut
    donc a votre avis la fonction P1 comment ca va etre définie
    Tu peux retrouver les définitions de fonction du fichier en y cherchant la mention "FUNCTION"

    Pour voir ce que contient P1(), tu peux exécuter sur ta console SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SHOW CREATE FUNCTION P1;

  11. #11
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Par défaut
    je n'ai pas cette function je veux la créer

    cette function doit passer un parametre a une vue

    et elle s'appelle comme ca P1()

    et dans le code elle les appelle comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select s.* from (select @p1:='" . $idColis. "' p) parm
    vue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /*!50001 VIEW `client` AS select............= `P1`())..
    je veux deduire son code

    parce que on ne peux pas passer des parametre a une vue donc ils ont utilisé cette fonction

    son but est lui retourné une seule donnée

    donc je deduit que P1 est select idcolis from matablequejeconnais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    je ne comprend pas ca (select @p1:='" . $idColis. "' p  est ce qu'il spécifie les parametre ou quoi ?
    desolée pour cette salade

  12. #12
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 330
    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 330
    Billets dans le blog
    17
    Par défaut
    cette function doit passer un parametre a une vue
    On ne passe pas de paramètre à une vue.
    => https://www.developpez.net/forums/d2...etre-view-sql/

    et elle s'appelle comme ca P1()

    et dans le code elle les appelle comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select s.* from (select @p1:='" . $idColis. "' p) parm
    Je ne vois pas d'appel de fonction ici, et ni de vue.

    vue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /*!50001 VIEW `client` AS select............= `P1`())..
    Je ne sais pas ce que tu veux faire ici. Tu caches ton code et tu ne dis pas ce que tu veux faire au final.

    je veux deduire son code
    Elle fait quoi cette fonction ?

    parce que on ne peux pas passer des parametre a une vue donc ils ont utilisé cette fonction
    À moins de savoir précisément ce qu'on fait, ce n'est pas une bonne idée, généralement, de mettre des requêtes dans une fonction.

    son but est lui retourné une seule donnée

    donc je deduit que P1 est select idcolis from matablequejeconnais
    P1() existe encore ? Plutôt que "déduire" son contenu tu peux le consulter, comme indiqué plus haut.


    Dis-nous plutôt ce que tu veux au final. J'ai l'impression de jouer aux devinettes sur un problème très mal exprimé

  13. #13
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Par défaut
    la fonction P1 je ne l'ai pas sur mon code je dois la définir pour faire exécuter la vue

  14. #14
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 330
    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 330
    Billets dans le blog
    17
    Par défaut
    la fonction P1 je ne l'ai pas sur mon code
    Et sur le serveur SQL ? Elle y est ?

    je dois la définir pour faire exécuter la vue
    C'est signe de mauvaise modélisation.

  15. #15
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Par défaut
    oui sur le serveur elle existe mais maintenant je n'ai pas le serveur en main je dois doit faire mes test avant lundi

Discussions similaires

  1. problème de syntaxe des requêtes sql au sein d'un code php
    Par timakssat.mariam dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 08/09/2015, 11h12
  2. [MySQL] Requête SQL tableau 2 dimensions et code php
    Par Starneo dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 18/07/2013, 09h52
  3. [PostgreSQL] SQL DB_query Segmentation fault dans code PHP
    Par diabli73 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 18/11/2008, 12h59
  4. [MySQL] probleme requete sql et php
    Par digger dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 10/10/2005, 14h15
  5. [SGBD] requête sql en php pour mysql
    Par Thierry8 dans le forum Requêtes
    Réponses: 1
    Dernier message: 20/09/2005, 22h31

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