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 :

Différence entre phpMyAdmin et PDO [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 486
    Billets dans le blog
    1
    Par défaut Différence entre phpMyAdmin et PDO
    Bonjour,

    j'extraie la liste des applicatifs à l'aide d'une requête SQL :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	$sql_appli = "SELECT nom_appli FROM `applicatifs` ORDER BY nom_appli";
    	$qid1 = $bdd->query($sql_appli);
    Mon souci est que le résultat obtenu avec un fetch :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	while ($row=$qid1->fetch(PDO::FETCH_OBJ)){//each line=new applicative
    		echo "copyserver 61 nomappli=".$nom_appli[$i]."<br/>";
    est différent de ce que donne phpMyAdmin pour l'un des applicatifs : em-plant pour PDO et eM_Plant pour phpMyAdmin.
    D'où peut venir cette différence ?

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 814
    Billets dans le blog
    14
    Par défaut
    Et avec MySQL en ligne de commande, ça donne quoi ?

    On peut avoir le code complet entre les deux morceaux ?
    Où sont valorisés $nom_appli et $i ?

    Pour afficher le nom de l'appli extrait du résultat de la requête, je ferais plutôt ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	while ($row=$qid1->fetch(PDO::FETCH_OBJ)){//each line=new applicative
    		echo "copyserver 61 nomappli=".$row->nom_appli."<br/>";
    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
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Ton code n'as ni queue ni tête.

    1- Tu fais un PDO::FETCH_OBJ , c'est déconseillé d'un point de vue performance sauf si tu as réellement besoin d'un objet. Préfère donc un PDO::FETCH_ASSOC
    2- Tu utilises une variable qui n'existe pas $nom_appli nom_appli semble en revanche être ton nom de champs.
    3- Tu essais d'accéder à un index qui à priori n'existe pas ($i) sur une variable qui n'existe pas non plus ($nom_appli) , en tout cas dans le code que tu nous présente.

    Bref , quelque chose de plus correct devrait être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    while ($row=$qid1->fetch(PDO::FETCH_ASSOC))
    		echo "copyserver 61 nomappli=".$row['nom_appli']."<br/>";
    Pour finir ton titre : Différence entre phpMyAdmin et PDO , ne veux pas dire grand chose puisque ces deux chose n'ont rien à voir entre elle
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 486
    Billets dans le blog
    1
    Par défaut
    Oups, c'était bourré de bugs et je m'en étais même pas aperçu. J'ai corrigé ce que j'ai pu mais il y a encore une erreur.

    Mon code en entier :
    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
    	/* list of applicatives */		
    	$sql_appli = "SELECT nom_appli FROM `applicatifs` ORDER BY nom_appli";
    	$qid1 = $bdd->query($sql_appli);
    	/* creation of the line in table infoappli */
    	$query='INSERT INTO `infoappli` (name) VALUES("'.$name_copy.'")';
    	$bdd->query($query);
     
     
    	/* table infoappli : for name=$machselcopy (ligne), for each applicative (colon) read value */
    	/* name of colon=name read in table applicatifs (line 49 or 8 lines above) */
     
    	while ($nom_appli=$qid1->fetch(PDO::FETCH_NUM)){//each line=new applicative
    		$nom_appli[0]=str_replace(" ","",strtolower($nom_appli[0]));
    		if ($nom_appli[0]=="autre...") $nom_appli[0]="autre";
     
    		$sql="SELECT ".$nom_appli[0].' from `infoappli` where name="'.$machselcopy.'"';var_dump($sql);
    		$qid3=$bdd->query($sql);
    		$rowinfoappli=$qid3->fetch(PDO::FETCH_OBJ);//var_dump($rowinfoappli);
    		$value=$rowinfoappli->{$nom_appli[0]};//var_dump($value);
    		//update : colon=value read for where 
    		$query='update `infoappli` SET '.$nom_appli[0].'="'.$value.'" where name="'.$name_copy.'"';//var_dump($query);
    		$bdd->query($query);
    	}

    Donc maintenant, ça se passe bien sauf pour le nom d'un des applicatifs : dans la base MySQL et retourné par phpMyAdmin : eM_Plant et retourné par PDO : eM-Plant. J'ai rajouté cette ligne : $nom_appli[0]=str_replace("-","_",$nom_appli[0]);. Mais j'ai encore un message d'erreur :
    Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'em_plant' in 'field list'' in D:\wamp\www\eis_donoterase\page\copyserver.php on line 65
    et ce que je ne comprends pas, c'est que cette colonne existe !

    Citation Envoyé par grunk Voir le message
    Pour finir ton titre : Différence entre phpMyAdmin et PDO , ne veux pas dire grand chose puisque ces deux chose n'ont rien à voir entre elle
    J'avais pris un raccourci : avec les 2, on peut visualiser le contenu d'une table et il y avait une différence.

    EDIT : j'ai exécuté dans phpMyAdmin la requête qui provoque le message d'erreur SELECT em_plant from `infoappli` where name="DBMAP" et ça passe bien !

  5. #5
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 486
    Billets dans le blog
    1
    Par défaut
    En modifiant le nom de la colonne (je vire le tiret : emplant), ça marche ; je ne comprends pas mais je m'en contente...

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

Discussions similaires

  1. UTF-8, différence entre mon site et phpmyadmin
    Par defacta dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 22/07/2016, 18h39
  2. Différence entre mysql workbench et mysql phpmyadmin
    Par ninorifa dans le forum Administration
    Réponses: 2
    Dernier message: 02/08/2013, 01h43
  3. différence entre export phpmyadmin et mysqldump
    Par PiRK67 dans le forum Administration
    Réponses: 0
    Dernier message: 16/08/2010, 10h30
  4. [SQL] Différence d'exécution d'une requête entre phpmyadmin et php
    Par lodan dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 31/08/2006, 15h56
  5. Réponses: 3
    Dernier message: 07/05/2002, 16h06

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