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

MySQL Discussion :

Mysql en mysqli. De qui se moque t'on?


Sujet :

MySQL

  1. #1
    Membre régulier
    Homme Profil pro
    Apprenti perpétuel
    Inscrit en
    Novembre 2012
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Apprenti perpétuel

    Informations forums :
    Inscription : Novembre 2012
    Messages : 193
    Points : 71
    Points
    71
    Par défaut Mysql en mysqli. De qui se moque t'on?
    Bonjour à toutes et tous,

    J'ai eu écho que le mot "mysql" ne sera bientôt plus valide et qu'il faudra le remplacer par "mysqli"... !!!
    Ce mot existe dans des millions de pages sur des millions de sites Internet.
    Cela veut dire qu'on s'expose a des millions de bug potentiels...
    Ou allons-nous ainsi? De qui se moque t'on?

    Qu'on crée des nouveaux mots de langage php pour offrir des nouvelles fonctions: OUI
    Mais, ne cassons pas ce qui a été construit.
    Cela s'appelle du vandalisme, du sabotage ou du terrorisme (pour reprendre un mot très actuel).
    C'est comme si on désintégrait les briques de toutes les maisons construites en brique...
    Et demain, ce sera au tour des parpaings... !!! ???

    Aujourd'hui, mysql a changer par mysqli et demain...
    La balise html en htmli...
    La balise php en phpi... Etc...
    C'est pire que du suicide, c'est de la torture !!!

    Levons nous et agissons... Ne croyez-vous pas ?
    Lançons un vote ou un référendum interne aux développeurs... Qu'en pensez-vous ?

    Informatiquement votre.
    H Olivier Dauxais.

  2. #2
    Membre averti
    Homme Profil pro
    Consultant PLM
    Inscrit en
    Août 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Consultant PLM

    Informations forums :
    Inscription : Août 2007
    Messages : 203
    Points : 304
    Points
    304
    Par défaut
    A ma connaissance (je suis preneur de liens dans le cas contraire), l'extension mysql_ n'est que dépréciée au profit de l'extension mysqli_ ou de PDO.
    Cela signifie que vous pourrez continuer à utiliser les fonctions mysql_ mais qu'il vaudrait mieux passer à la nouvelle génération.

    L'intérêt est de bénéficier de nouvelles fonctionnalités sans casser la compatibilité des applications plus anciennes.

  3. #3
    Membre éclairé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2012
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2012
    Messages : 416
    Points : 747
    Points
    747
    Par défaut
    Bonjour,

    @olivierdauxais : Un développeur doit s'adapter aux évolutions des langages, pas le contraire. Je ne pense pas qu'ils suppriment mysql_* pour s'amuser...

    @bhamp0 : mysql_* sera supprimé à terme.

  4. #4
    Membre averti
    Homme Profil pro
    Consultant PLM
    Inscrit en
    Août 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Consultant PLM

    Informations forums :
    Inscription : Août 2007
    Messages : 203
    Points : 304
    Points
    304
    Par défaut
    Citation Envoyé par valaendra Voir le message
    @bhamp0 : mysql_* sera supprimé à terme.
    Source ?

  5. #5
    Membre éclairé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2012
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2012
    Messages : 416
    Points : 747
    Points
    747
    Par défaut
    La documentation officielle.
    C'est affiché dans l'avertissement de toutes les pages relatives aux fonctions mysql_*

    Par exemple :
    intro de l'API mysql : https://php.net/manual/fr/intro.mysql.php
    mysql_query : https://php.net/manual/fr/function.mysql-query.php

  6. #6
    Membre averti
    Homme Profil pro
    Consultant PLM
    Inscrit en
    Août 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Consultant PLM

    Informations forums :
    Inscription : Août 2007
    Messages : 203
    Points : 304
    Points
    304
    Par défaut
    Ah ouais, la dernière fois que j'avais regardé, c'était juste indiqué que c'était déprécié sans avoir d'indication que ça serait supprimé un jour ...

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

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Citation Envoyé par olivierdauxais Voir le message
    Cela veut dire qu'on s'expose a des millions de bug potentiels...
    Seulement en cas de migration de PHP vers une version non compatible directement en prod sans aucun test
    Ca va, le risque me semble acceptable...

    Citation Envoyé par olivierdauxais Voir le message
    Ou allons-nous ainsi?
    Vers plus de sécurité.

    Citation Envoyé par olivierdauxais Voir le message
    De qui se moque t'on?
    De ceux qui continue à utiliser une mysql_*, fonctionnalité obsolète, lors de la conception d'une application PHP en version 5.5.

  8. #8
    Membre régulier
    Homme Profil pro
    Apprenti perpétuel
    Inscrit en
    Novembre 2012
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Apprenti perpétuel

    Informations forums :
    Inscription : Novembre 2012
    Messages : 193
    Points : 71
    Points
    71
    Par défaut
    Oui, c'est bien que MySQL évolue...
    Tout comme le HTML qui a su évoluer en HTML5 sans pour autant devoir modifier toutes les balises <html> en <html5> !!!
    De même pour le PHP qui a su évoluer en PHP5 sans pour autant devoir modifier toutes les balises <php> en <php5> !!!
    Dieu merci.
    Par contre, pour SQl, il va nous falloir modifier des centaines voire des milliers de lignes pour changer le mot "mysql" en "mysqli" !!!

    Je me suis amusé à télécharger la dernière version de easyPHP pour voir se que donneraient mes anciennes pages codées avec "mysql".
    Eh bah, ce n'est pas joli joli, j'ai des messages d'erreur qui s'affichent partout et qui me défigurent mon site qui en devient illisible !!!!!

  9. #9
    Membre averti
    Homme Profil pro
    Consultant PLM
    Inscrit en
    Août 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Consultant PLM

    Informations forums :
    Inscription : Août 2007
    Messages : 203
    Points : 304
    Points
    304
    Par défaut
    Euh ... là, c'est bien PHP qui évolue au niveau de la prise en charge de MySQL, et non l'inverse.
    Donc, au pire, faudrait blamer PHP.

  10. #10
    Membre éclairé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2012
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2012
    Messages : 416
    Points : 747
    Points
    747
    Par défaut
    Citation Envoyé par olivierdauxais Voir le message
    Par contre, pour SQl, il va nous falloir modifier des centaines voire des milliers de lignes pour changer le mot "mysql" en "mysqli" !!!:
    Si seulement c'est aussi simple, il y a des petites différences d'implémentation entre mysql_ et mysqli_ qui vont plus loin que l'ajout d'une lettre dans le nom des fonctions

    Sinon, depuis PHP3, il y a eu des modifications bien plus contraignantes que ça...

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

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Citation Envoyé par olivierdauxais Voir le message
    Je me suis amusé à télécharger la dernière version de easyPHP pour voir se que donneraient mes anciennes pages codées avec "mysql".
    Eh bah, ce n'est pas joli joli, j'ai des messages d'erreur qui s'affichent partout et qui me défigurent mon site qui en devient illisible !!!!!
    C'est juste deprecated, il suffit de ne pas afficher les erreurs E_DEPRECATED en modifiant le php.ini.

  12. #12
    Membre régulier
    Homme Profil pro
    Apprenti perpétuel
    Inscrit en
    Novembre 2012
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Apprenti perpétuel

    Informations forums :
    Inscription : Novembre 2012
    Messages : 193
    Points : 71
    Points
    71
    Par défaut
    Merci pour vos réponses qui m'ont clairement fait comprendre que je dois passer à mysqli.

    J'ai donc regardé plein de tutoriels et infos sur le net pour étudier mysqli.
    Le manuel officiel de php est plein d'infos techniques mais absolument pas pédagogue.
    Il existent des tutoriels très pédagogues mais souvent incomplets voire erronés...

    J'ai aussi compris qu'il existe 2 mode mysqli: Le procédural et l'orienté objet.
    Et je vois plein de tutos qui mélangent parfois les 2 styles.
    J'arrive maintenant à me débrouiller avec mysqli mais quand bien même mon code fonctionne bien sur EasyPHP,
    je crains ne pas avoir un code très propre.

    SVP, pourriez-vous me montrer comment écrire "dans les règles de l'art" et dans chaque style (procédural et orienté objet) mes 2 anciens script PHP/MySQL ci-dessous?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php // index.php script recording visitors in my table "visitors" in my database "olivier":
      $VisitIp=$_SERVER['REMOTE_ADDR']; $VisitDate=date("y-m-d"); 
      $base = mysql_connect ('localhost', 'root', ''); mysql_select_db ('olivier', $base);
      $sql = 'SELECT count(*) FROM visitors WHERE VisitIp="'.mysql_real_escape_string($VisitIp).'" 
      AND VisitDate="'.mysql_real_escape_string($VisitDate).'" ';  
      $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  
      $data = mysql_fetch_array($req);  
      if ($data[0]==0) {$sql='INSERT INTO visitors VALUES("","'.mysql_real_escape_string($VisitIp).'",
      "'.mysql_real_escape_string($VisitDate).'")'; 
      mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());} 
      mysql_free_result ($req); mysql_close(); ?>

    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
    <?php // Stat.php script showing the total amount of visitors & counting the visits per day for the last 2 months:
      $base = mysql_connect ('localhost', 'root', ''); mysql_select_db ('olivier', $base); 
      $sql='SELECT * FROM visitors'; 
      $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
      $TotalVisitors = mysql_num_rows($req);
      echo '<h3>Total of visitors since 2013-04-16: <font color="red"><b>'.$TotalVisitors.'</b></font></h3>'; 
      mysql_free_result ($req);
     
      $sql = 'SELECT VisitDate, COUNT(VisitDate) AS CountRow FROM visitors GROUP BY VisitDate ORDER BY VisitDate DESC 
      LIMIT 0,60 ';
      $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
      echo '<h3>All the visits per day for the last 2 months:</h3>';
      while ($row = mysql_fetch_array($req)) {
      echo 'Visitors on '.$row['VisitDate'].': <font color="red"><b>'.$row['CountRow'].'</b></font><br />';}
      mysql_free_result ($req); mysql_close (); ?>

  13. #13
    Membre émérite
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    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 : 939
    Points : 2 287
    Points
    2 287
    Par défaut
    Bonjour à tous

    Je me suis penché sur PHP depuis 1 an à peu près, et j'ai toujours lu que "Mysql_" ne devait pas être utilisé, mais bien "mysqli" ou mieux PDO. En plus, à lire certains le passage se fait quand même en douceur, puisqu'on passe d'abord par une dépréciation avant un abandon. Cela donne le temps de s'adapter petit à petit.

    Pierre

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

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Citation Envoyé par olivierdauxais Voir le message
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      $sql = 'SELECT count(*) FROM visitors WHERE VisitIp="'.mysql_real_escape_string($VisitIp).'" 
      AND VisitDate="'.mysql_real_escape_string($VisitDate).'" ';
    ...
    Utilisez plutôt des requêtes paramétrées avec mysqli (ou PDO)

  15. #15
    Membre averti Avatar de Amélie Ladoque
    Inscrit en
    Novembre 2004
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 251
    Points : 310
    Points
    310
    Par défaut
    Les fonctions mysqli_ ont été introduites en 2008 afin de pouvoir profiter des améliorations de MySQL 4.1+

    Maintenant, mieux vaut passer par des classes si vous voulez vous affranchir des évolutions.

  16. #16
    Membre actif Avatar de zaza576
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2013
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 175
    Points : 275
    Points
    275
    Par défaut
    Hello,

    il faut arrêter de ronchonner pour rien. La team PHP l'a signalé depuis belle lurette que mysql_* allait dégager. On ne met pas des fonctions en déprécié (deprecated) pour rien. Il faut savoir accuser le coup et accepter le changement.

    Normalement, une application bien conçue n'a pas une interface de base de données si lourde que ça à maintenir. Et puis, refaire l'API de communication avec la base de données prend pas tant de temps sachant que la philosophie de mysqli est proche de mysql_*.

    Si vous êtes pas à l'aise avec les évolutions, faîtes comme moi, une API qui interface un langage de base de données, et qui reste transparent pour votre application.

    APPLICATION = Controler + View + API_BDD + Models + SGBD

    API_BDD est une interface qui offre des fonctions classiques telles que :
    select(maRequete, mes parameters);
    insert ...
    remove ...
    update ...

    Et implémentez vous même avec mysql_*, mysqli, neo4J, mongodb, ... votre propre API. Ainsi, si du jour au lendemain, il vous est demandé de passer sur une autre BDD, bah vous avez juste à réimplémenter un script et votre base plutôt que toute votre application !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function googleIsYourF*ck*ngFriend(String url, String maQuestion){
        goTo(url);
        reponse = find(maQuestion);
        if(isAcceptable(reponse)){
            clickOn(By.xpath("//button[@id='resolvedButton']"));
        }
        sendMessage("Merci");
    }
    
    googleIsYourF*ck*ingFriend("http://www.google.fr", "ma question");

  17. #17
    Membre régulier
    Homme Profil pro
    Apprenti perpétuel
    Inscrit en
    Novembre 2012
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Apprenti perpétuel

    Informations forums :
    Inscription : Novembre 2012
    Messages : 193
    Points : 71
    Points
    71
    Par défaut
    Merci pour toutes vos réponses.
    Est-ce que quelqu'un pourrait écrire une version mysqli de mon bout de code ci-dessus?
    Ce bout de code permet de compter les visiteurs d'un site.
    Cela pourrait servir à beaucoup de voir un exemple concret de "avant" et "après"...
    Et peut-être que par la même occasion, il y aura plein de débutants comme moi qui arrêterons de ronchonner après avoir lu cette discussion...

  18. #18
    Membre actif Avatar de zaza576
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2013
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 175
    Points : 275
    Points
    275
    Par défaut
    Citation Envoyé par olivierdauxais Voir le message
    Merci pour toutes vos réponses.
    Est-ce que quelqu'un pourrait écrire une version mysqli de mon bout de code ci-dessus?
    Ce bout de code permet de compter les visiteurs d'un site.
    Cela pourrait servir à beaucoup de voir un exemple concret de "avant" et "après"...
    Et peut-être que par la même occasion, il y aura plein de débutants comme moi qui arrêterons de ronchonner après avoir lu cette discussion...
    Demande à la team de php.net de faire le travail vu que tu es doué pour la sous traitance
    Ca ne coûte pas un bras d'aller visionner chaque fonction / méthode de mysql_*, évoluée en mysqli dans la doc officielle php.net et de faire le remplacement.

    Et je ne crois pas que ce soit le rôle de la maison (dixit, developpez.net) de faire le travail à la place des visiteurs. Developpez.net est une communauté libre, présente pour aider, pas pour faire le job ! Ou alors faut payer, mais pas en ferrero rochers ;-)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function googleIsYourF*ck*ngFriend(String url, String maQuestion){
        goTo(url);
        reponse = find(maQuestion);
        if(isAcceptable(reponse)){
            clickOn(By.xpath("//button[@id='resolvedButton']"));
        }
        sendMessage("Merci");
    }
    
    googleIsYourF*ck*ingFriend("http://www.google.fr", "ma question");

  19. #19
    Membre régulier
    Homme Profil pro
    Apprenti perpétuel
    Inscrit en
    Novembre 2012
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Apprenti perpétuel

    Informations forums :
    Inscription : Novembre 2012
    Messages : 193
    Points : 71
    Points
    71
    Par défaut
    Je croyais pourtant que les forums était un lieu ou les lumières de certains peuvent éclairer ceux qui sont dans l'ombre...

  20. #20
    Membre actif Avatar de zaza576
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2013
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 175
    Points : 275
    Points
    275
    Par défaut
    Parfaitement,

    viens t'éclairer, mais viens pas soumettre

    Nous t'avons donné plein d'indications et de sources pour que tu fasses la conversion.
    Tu ne voudrais pas le beurre et l'argent du beurre quand même ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function googleIsYourF*ck*ngFriend(String url, String maQuestion){
        goTo(url);
        reponse = find(maQuestion);
        if(isAcceptable(reponse)){
            clickOn(By.xpath("//button[@id='resolvedButton']"));
        }
        sendMessage("Merci");
    }
    
    googleIsYourF*ck*ingFriend("http://www.google.fr", "ma question");

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Requête mysql (rechercher tout ce qui commence par).
    Par toffff dans le forum Requêtes
    Réponses: 2
    Dernier message: 09/03/2007, 09h44
  2. [MySQL] Extension mysql ou mysqli ?
    Par DJesus dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 08/03/2007, 12h50
  3. Faire cohabiter mysql et mysqli
    Par Christophe Charron dans le forum Installation
    Réponses: 1
    Dernier message: 01/03/2006, 17h14
  4. difference entre MySQL et Mysqli?
    Par maire106 dans le forum Installation
    Réponses: 3
    Dernier message: 16/06/2005, 16h17

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