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 :

Bizarrerie pour une requête sur une table entre phpmyadmin et requête standard php


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2016
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Bizarrerie pour une requête sur une table entre phpmyadmin et requête standard php
    Bonjour,

    Dans une BD déjà constituée et opérationnelle, j'ai ajouté une table avec 2 colonnes seulement.

    badge{id,code}
    avec 2 lignes
    1 : 00112425625
    56 : 00115845895

    Pour accéder à la table depuis phpmyadmin, pas de problème.
    Nom : Capture d’écran 2021-12-07 190100.jpg
Affichages : 132
Taille : 26,7 Ko
    Je prends la même requête dans le fichier php avec une class mysqli opérationnelle sur les autres tables de la BD et là ... RIEN

    Aucun résultat
    la requête très sophistiquée est : SELECT * FROM badge.

    Ca fait 2 jours que je tourne en rond, si vous avez une (des) piste(s) je suis preneur. Merci.

    Pour info, j'ai exporter la table dans ne autre BD, et là pas de problème.
    J'ai changé de nom de table de colonnes ... rien

    exemple sous php

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    echo "badge<pre>";	
    $result=$mysqli->query("SELECT * FROM badge");
    print_r($result);
    echo "</pre>****************************<br>authentication<pre>";
    $result=$mysqli->query("SELECT * FROM authentication");
    print_r($result);
    echo "</pre>****************************";

    Résultat

    badge
    ****************************
    authentication
    mysqli_result Object
    (
        [current_field] => 0
        [field_count] => 29
        [lengths] => 
        [num_rows] => 81
        [type] => 0
    )
    ****************************

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 338
    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 : 10 338
    Points : 39 733
    Points
    39 733
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Êtes-vous sûr d'être connecté dans les deux cas à la même base de données ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2016
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Bien sûr, les lignes php sont telles quelles, donc pas de modification de configuration de BD entre les 2 requêtes avec même instance de class, donc la même configuration.
    J'ai cherché si il pouvait y avoir une limitation du nombre de tables, mais avec 61 tables on est loin du compte.

    D'ailleurs voici le code complet du test
    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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?php
    $dbserver='xxxxxx';
    $dbdb='xxxx';		
    $dbuser='xxxxxx';
    $dbpass='xxxxxxxx';
     
    class foo_mysqli extends mysqli {
        public function __construct($host, $user, $pass, $db) {
            parent::__construct($host, $user, $pass, $db);
     
            if (mysqli_connect_error()) {
                die('Erreur de connexion (' . mysqli_connect_errno() . ') '
                        . mysqli_connect_error());
            }
        }
    }
    $mysqli = new foo_mysqli($dbserver, $dbuser, $dbpass, $dbdb);
     
    echo "badge<pre>";	
    $result=$mysqli->query("SELECT * FROM badge");
    print_r($result);
    echo "</pre>****************************<br>authentication<pre>";
    $result=$mysqli->query("SELECT * FROM authentication");
    print_r($result);
    echo "</pre>****************************";
    ?>
    et voici les tables dans la BD
    Nom : Tables.jpg
Affichages : 107
Taille : 22,1 Ko

  4. #4
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 464
    Points : 19 453
    Points
    19 453
    Par défaut
    Salut à tous.

    Je ne vois pas la fonction qui permet de se connecter à votre base de données.
    Quelque chose dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $link = mysqli_connect($host, $user, $pass, $db);
    Cordialement.
    Artemus24.
    @+

  5. #5
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2016
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    je déclare une instance de class ici, juste en dessous de la class
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mysqli = new foo_mysqli($dbserver, $dbuser, $dbpass, $dbdb);
    En tout état de cause si la connexion n'était pas établie pour une table elle ne le saurait pas pour l'autre.
    Cela fait plus de 10ans que j'utilise cette méthode pour me connecter à mes bases de données.

  6. #6
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 464
    Points : 19 453
    Points
    19 453
    Par défaut
    Salut Jajaro.

    Peut-être que cela fonctionne depuis dix ans
    Mais comme vous nous avez communiqué qu'une partie de votre code, il est difficile de deviner le reste.
    Qu'est-ce que vous avez mis dans "__construct" ?

    Citation Envoyé par Jajaro
    En tout état de cause si la connexion n'était pas établie pour une table elle ne le saurait pas pour l'autre.
    Il ne faut pas partir avec des certitudes si elles ne sont pas vérifiés avant.

    Avec si peu d'informations sur la nature de votre problème, il est difficile de vous répondre avec exactitude.

    Citation Envoyé par Jajaro
    Pour info, j'ai exporter la table dans ne autre BD, et là pas de problème.
    Une piste de recherche est de savoir pourquoi cela fonctionne dans votre autre base de données et pas dans celle-ci.
    Il doit bien exister une différence dans la façon dont vous vous connecter à vos base de données.

    Cordialement.
    Artemus24.
    @+

  7. #7
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    Est-ce que le user utilisé pour se connecter à la base est le même entre phpmyadmin et l'appli php.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2016
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    Salut Jajaro.
    Peut-être que cela fonctionne depuis dix ans
    Mais comme vous nous avez communiqué qu'une partie de votre code, il est difficile de deviner le reste.
    Qu'est-ce que vous avez mis dans "__construct" ?
    ??? Quel reste ?
    Dans le post qui précède le votre il y a l'intégralité du code. Que puis-je faire de plus ? (sauf les codes d'accès )
    Si vous avez un doute, tester cette méthode sur une de vos BD, mais au bout de 10 ans sur les même BD avec les mêmes procédures, c'est vrai qu'une certaine certitude s'installe. Le contraire serait étonnant.
    Avec si peu d'informations sur la nature de votre problème, il est difficile de vous répondre avec exactitude.
    Si j'en savais plus, je le dirais.
    Ce que je peux néanmoins ajouter, c'es que cette BD je l'ai exportée depuis une BD sous MariaDB5 pour l'importé vers MariaDB10 il y a 6 mois.
    Depuis 6 mois elle est en en activité, c'est le site de réservation d'appareil pour mon club.
    J'ai également tenté de créer d'autre tables dans cette BD, qui ont le même comportement. C.a.d. fonctionnent parfaitement sous phpMyAdmin, mais inaccessible depuis php ???
    Une piste de recherche est de savoir pourquoi cela fonctionne dans votre autre base de données et pas dans celle-ci.
    Il doit bien exister une différence dans la façon dont vous vous connecter à vos base de données.
    La seule différence dans le programme de test entre les différentes BD qui sont sur le même serveur, je change le nom de la BD dans les paramètres (variables) de connexion. Le serveur étant le même comme le login et le password.
    Je dirais même plus, pourquoi CETTE table là (ou ces nouvelles tables) et pas les autres (importées).
    Il me semble que j'ai eu cette idée également, mais après 2 jours de recherche ..... mais je l'ai déjà dis il me semble, donc je suis venu chercher du l'aide ici.

    Dernier test, j'ai exportée la table badge, supprimée de la BD puis réimportée ... pas de changement

  9. #9
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2016
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par skuatamad Voir le message
    Est-ce que le user utilisé pour se connecter à la base est le même entre phpmyadmin et l'appli php.
    Oui, bien sur. Sinon je n'aurai pas non plus accès à la 2eme table qui est dans la même BD (enfin il me semble)

  10. #10
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2016
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    A y est, trouvé Tout fonctionne bien, sauf la tête
    Dans mon dernier post, j'indique que j'ai transféré la BD de MariaDB5 vers MariaDB10, et en l'écrivant je me suis souvenu que je ne voyait pas l'indication du port de MariaDB10 dans mon paramétrage.
    Après vérification, BINGO, le transfert à bien été fait, mais mon PHP est toujours connecté sur MariaDB5.

    Donc problème résolu. (s'il en est)

    J'attends quelques temps avant de passer en résolu, le temps de vous laisser aller à quelques messages .... gentils

    Malgré tout ce forum m'a été très utile, puisque c'est en répondant à vos questions que j'ai mis le doigt sur mon problème.
    Merci pour votre participation.

  11. #11
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 338
    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 : 10 338
    Points : 39 733
    Points
    39 733
    Billets dans le blog
    9
    Par défaut
    Il faut vérifier les droits accordés (show grants) pour une table de la DB qui fonctionne comme souhaité et comparer à ceux accordés à la table de la même DB pour laquelle ça ne fonctionne pas. Je ne serais pas surpris que les droits soient différents.

  12. #12
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 464
    Points : 19 453
    Points
    19 453
    Par défaut
    Salut à tous.

    Citation Envoyé par Jajaro
    Donc problème résolu. (s'il en est)
    Bravo, même si notre intervention a été peu utile.

    Cordialement.
    Artemus24.
    @+

  13. #13
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 338
    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 : 10 338
    Points : 39 733
    Points
    39 733
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par jajaro Voir le message
    A y est, trouvé Tout fonctionne bien, sauf la tête
    Dans mon dernier post, j'indique que j'ai transféré la BD de MariaDB5 vers MariaDB10, et en l'écrivant je me suis souvenu que je ne voyait pas l'indication du port de MariaDB10 dans mon paramétrage.
    Après vérification, BINGO, le transfert à bien été fait, mais mon PHP est toujours connecté sur MariaDB5.
    Donc problème résolu. (s'il en est)
    Tant mieux que ça fonctionne , mais du coup on en revient à

    Citation Envoyé par escartefigue Voir le message
    Bonjour,

    Êtes-vous sûr d'être connecté dans les deux cas à la même base de données ?

  14. #14
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2016
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Bonjour,

    Êtes-vous sûr d'être connecté dans les deux cas à la même base de données ?
    Oui et non. Je créais une table dans une BD sous le serveur MariaDB10 persuadé que c'était celle en service après le transfert de BD, alors que j'interrogeais une table sur une "même BD" mais qui était sur le serveur MariaDB5.

    Donc oui les tables étaient bien dans la même BD (sur MariaDB10) mais Non parce que j'interrogeais l'ancienne BD sur MariaDB5 (au passage qui celle qui est restée en service) qui connaissait bien la table existante mais ne pouvait accéder à la nouvelle table, et pour cause.

    Merci, je classe en "résolu"

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

Discussions similaires

  1. Requête ou procédure pour une Table croisée
    Par BESTWAIL dans le forum SQL
    Réponses: 24
    Dernier message: 08/01/2016, 16h21
  2. Réponses: 7
    Dernier message: 27/11/2012, 23h59
  3. [Débutant] Organiser son code pour une jointure entre 2 tables
    Par scude dans le forum ASP.NET MVC
    Réponses: 4
    Dernier message: 02/05/2012, 11h59
  4. Réponses: 8
    Dernier message: 26/03/2008, 16h58
  5. Réponses: 3
    Dernier message: 23/01/2008, 15h05

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