Passer de mysql à mysqli

Rechercher
Boutique en ligne, solution e-commerce, script PHP et PERL : RAYNETTE

Passer de mysql à mysqli

Par philou  -  3 reponses  -  Le 02/12/2017 18:44  -  Editer  - 

Bonjour,

je suis débutant et j'ai récupéré l'administration d'un site développé par "je ne sais qui" en 2005 et qui n'a pas été maintenu...

Le site fonctionne mais j'ai un énorme temps de latence lors des accès à la base de données.

Je tente de passer à mysqli mais j'avoue être perdu.

voici le code original de connexion:

    function connexion ()  
        {  
            global $g_config_file;  
            require ($g_config_file);  
            // Connexion au serveur  
            $connexion = mysql_pconnect ($serveur, $user, $password);  
            if (!$connexion) {  
                // echo "Désolé, connexion au serveur $serveur impossible pour utilisateur $user avec password $password \n";  
                echo "Désolé, connexion au serveur $serveur impossible.\n";  
                exit;  
            }  
            // Connexion à la base  
            if (!mysql_select_db ($base, $connexion)) {  
                echo "Désolé, accès à la base $pBase impossible\n";  
                echo "<B>Message de MySQL :</B> " . mysql_error($connexion);  
                exit;  
            }  
            // On renvoie la variable de connexion  
            return $connexion;  
        }  
        // ---------------------------------------------------------------------  
        // Retourne le résultat d'un SELECT dans une variable  
        // ---------------------------------------------------------------------  
        function query2var($vt_query)  
        {  
            $vq_query = mysql_query($vt_query);  
            $va_query = mysql_fetch_array ($vq_query);  
            $va_result = $va_query[0];  
            return $va_result;  
        }  
        // ---------------------------------------------------------------------  
        // Retourne le résultat d'un SELECT dans un tableau à 1 dimenssion  
        // ---------------------------------------------------------------------  
        function query2tab($vt_query)  
        {  
            $vq_query = mysql_query($vt_query);  
            $va_result = mysql_fetch_row($vq_query);  
            return $va_result;  
        }  
        function query2tab2($vt_query)  
        {  
            $vq_query = mysql_query($vt_query);  
            $i = 0;  
            while ($va_query = mysql_fetch_array($vq_query)) {  
                $va_result[$i] = $va_query[0];  
                $i++;  
            }  
            return $va_result;  
        }  
        // ---------------------------------------------------------------------  
        // Retourne le résultat d'un SELECT dans un tableau à n dimensions  
        // ---------------------------------------------------------------------  
        function query2tabn($vt_query)  
        {  
            $vq_query = mysql_query($vt_query);  
            $i = 0;  
            while ($va_query = mysql_fetch_array($vq_query)) {  
                $va_result[$i] = $va_query;  
                $i++;  
            }  
            return $va_result;  
        }  
        // ///////////////////////////  

J'ai commencé à "corriger" par:

     function connexion ()  
        {  
            global $g_config_file;  
            require ($g_config_file);  
            // Connexion au serveur  
            // 162  $connexion = mysql_pconnect ($serveur, $user, $password);  
            $connexion = mysqli_connect ($serveur, $user, $password, $base);  
            if (mysqli_connect_errno()) {  
                 echo "Echec de la connexion: " . mysqli_connect_error();  
                exit();  
            }  

            // On renvoie la variable de connexion  
            return $connexion;  
        }  

mais je ne suis sûr de rien, et quelles sont les bonnes syntaxes pour:
mysql_pconnect;

    $vq_query = mysql_query($vt_query);  
    $va_query = mysql_fetch_array ($vq_query);  
    $va_result = mysql_fetch_row($vq_query);  

Vous remerciant pour l'aide que vous pouvez m'accorder

Très cordialement

 

Réponses apportées à cette discussion

Par Cyrano  -  Le 03/12/2017 11:14  -  Haut de page  - 

Salut,
la plupart des fonctions mysql_xxx existent en mysqli_xxx donc un simple Rechercher/Remplacer peut fonctionner pour l'essentiel du code. Il pourrait arriver que pour certaines fonctions très particulières ça ne fonctionne pas mais les cas ne seront pas nombreux et faciles à rattraper.

Il peut également arriver exceptionnellement que la nature et l'ordre des paramètres pour certaines fonctions varient entre mysql_ et mysqli_ mais ce serait à la marge sur une fonctoin ou deux.

Sinon, pour gagner aussi en performance, il serait également très utile d'inspecter la structure de la base de données et de vérifier les indexations de colonnes. Là, ce sera du cas par cas et il faudra mesure l'intérêt selon qu'il y a davantage d'écritures que de lectures ou l'inverse. Il faut en effet savoir que l'indexation d'une colonne va un peu ralentir l'écriture puisque ça implique le ré-écriture de tout l'index à chaque insertion/modification.

Attention toutefois aux versions de MySQL ainsi que des versions de PHP utilisées.

Dans tous les cas, il reste tout aussi important de s'appuyer sur la documentation qui est largement détaillée avec des exemples de code

 
Par philou  -  Le 04/12/2017 09:33  -  Haut de page  - 

Bonjour,

En fait le problème de latence est dû à la fonction "mail" de php (5.4), même en optimisant le code ça n'a rien changé et comme c'est un serveur mutualisé je n'ai pas accès au "php.ini", j'ai finalement utilisé la classe "PHPMailer" et plus de latence.

ceci ne m’empêche pas d'avoir à mettre à jour les accès Mysql.

merci pour ta réponse et ces informations

 
Par Cyrano  -  Le 04/12/2017 09:37  -  Haut de page  - 

Pas de quoi,
Cette modification par rapport à la fonction mail est étonnante dans la mesure où il n'est en principe censé n'y avoir strictement aucun lien avec MySQL. Je ne vois donc pas le rapport entre les deux.

Ceci étant, il est vrai que sur ce point PHPMailer est très efficace.

Et si tout fonctionne maintenant correctement, alors c'est une bonne chose. Bon code, @+

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !