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

Requêtes MySQL Discussion :

Requête préparée ne fonctionne pas


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    novembre 2010
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2010
    Messages : 101
    Points : 88
    Points
    88
    Par défaut Requête préparée ne fonctionne pas
    bonjour, je n'ai rien d'autre sur mon serveur que cette page index:
    ceci fonctionne:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $pdo= new PDO('mysql:host=localhost;dbname=developpement;charset=utf8', 'root', 'prout');
    $req = $pdo->query("SELECT * FROM `Adherent`  ");
    print_r($req->fetchAll());
    ceci ne fonctionne pas (aucun retour).
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        <?php 
    $pdo= new PDO('mysql:host=localhost;dbname=developpement;charset=utf8', 'root', 'prout');
    $req = $pdo->prepare("SELECT * FROM ?");
    $req->execute(["Adherent"]);
    print_r($req->fetchAll());
     
        ?>

    Dois je contacter un marabout?
    merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    septembre 2006
    Messages
    2 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : septembre 2006
    Messages : 2 856
    Points : 4 177
    Points
    4 177
    Par défaut
    Le nom des tables dans le FROM n'est pas paramétrable dans ce contexte.
    Très peu de SGBD supportent le polymorphisme et de toute façon ce ne sera pas avec cette syntaxe.

    Votre seule option est de construire la chaîne du query manuellement côté client.

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    8 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : mars 2010
    Messages : 8 986
    Points : 33 647
    Points
    33 647
    Billets dans le blog
    3
    Par défaut
    En même temps, select * est à proscrire dans une application, à la fois pour des raisons de stabilité des résultats, d'indépendance des données et des traitements et de performances.
    Mais, si on remplace * par la liste des colonnes utiles, la requête ne fonctionnera que pour une structure de données.

    Du coup l'intérêt me semble plus que limité. Quel est le besoin exactement ?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    novembre 2010
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2010
    Messages : 101
    Points : 88
    Points
    88
    Par défaut
    le "select *" est surtout la pour simplifier la requette en vu de la résolution du bug. Mais par ailleurs, je l'utiliserait parfois sur des tables, ou j'aurais besoin du coté client de l'intégralité des données de la table, et parfois je ferais plus précis, en fonction du contexte.
    Donc à prioris , je suis partie pour faire les vérification en PHP directement, ca fera du code moche.

  5. #5
    Membre chevronné
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    février 2008
    Messages
    926
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : février 2008
    Messages : 926
    Points : 2 228
    Points
    2 228
    Par défaut
    Bonjour

    Code moche? Pourquoi?

    Quelque chose du style

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if ($Chx_table == 'Adherent') 
        $sql = 'SELECT * FROM `Adherent`';
     
    if ($Chx_table == 'Activites') 
        $sql = 'SELECT * FROM `Activites`';
     
    etc.

    Pierre

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    mai 2002
    Messages
    21 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 21 300
    Points : 51 012
    Points
    51 012
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par vaneck Voir le message
    le "select *" est surtout la pour simplifier la requette en vu de la résolution du bug. Mais par ailleurs, je l'utiliserait parfois sur des tables, ou j'aurais besoin du coté client de l'intégralité des données de la table, et parfois je ferais plus précis, en fonction du contexte.
    Donc à prioris , je suis partie pour faire les vérification en PHP directement, ca fera du code moche.
    Non, cela est une aberration... En effet une base de données évolue en permanence. Certaines colonnes sont supprimées car obsolètes, d'autres ajoutées car devenu nécessaires en fonctions de la législation, des modes, des pratiques commerciales de la concurrence...etc !

    En utilisant le SELECT * en production vous vous exposez à des problématiques catastrophiques qui vont produire des résultats faux ou inexploitables...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  7. #7
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    8 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : mars 2010
    Messages : 8 986
    Points : 33 647
    Points
    33 647
    Billets dans le blog
    3
    Par défaut
    Sans compter, comme je le disais plus haut, l'impact négatif du select * sur les performances : non seulement on transporte des données inutiles au traitement (charge réseau supplémentaire), mais en plus, on s'interdit l'usage d'index couvrants s'il en existe.
    Double punition !
    Le select * ne devrait être utilisé que pour les requêtes à la volée, jamais dans les traitements

Discussions similaires

  1. [MySQL] Pourquoi cette requête préparée ne fonctionne-t'elle pas ?
    Par Alorslaçaprogramme dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 21/09/2015, 15h37
  2. [MySQL] Requête UPDATE ne fonctionne pas
    Par JackBeauregard dans le forum PHP & Base de données
    Réponses: 25
    Dernier message: 30/01/2007, 00h32
  3. [MySQL] Ma requête SQL ne fonctionne pas
    Par fabrice88 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/01/2007, 13h41
  4. [ADO.Net][OleDb] Pourquoi ma requête access ne fonctionne pas?
    Par Bapt.ice dans le forum Accès aux données
    Réponses: 6
    Dernier message: 05/05/2006, 18h19

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