Migrer PHP5 vers PHP7 MYSQLI

Migrer PHP5 vers PHP7 MYSQLI

Migration de php5 vers php7 les choses qui changent avec MYSQLI

Bonjour, à tous les amis codeurs, suite à une migration forcé de mon hébergeur si je ne veux pas payer des frais supplémentaires d’hébergement, je dois changer de version de PHP dans mes scripts en langage de programmation PHP.

Pour la plupart des mes applications j’utilisais un code PHP plutôt orienté PHP 5 ou antérieur coté serveur et donc je dois migrer vers PHP 7 si je ne veux pas payer ces frais supplémentaires liés à mon hébergement sur internet.

Ainsi je me suis aperçu en faisant des tests et en lisant des tutoriels que certaines fonctions PHP classiques ne fonctionnaient plus du tout après avoir migrer vers PHP 7 sur le serveur WEB de mon hébergeur.

Ce qui change chez moi de PHP 5 à PHP 7

Les fonctions natives comme mysql_connect() mysql_select_db() mysql_query() changent et d’autres comme mysql_result() disparaissent… (il faudra faire autrement).Donc si vous avez des migrations php à faire attention ce n’est pas si simple selon le nombre et la complexité du code de vos fichiers à modifier.

Voici un petit récapitulatif en PHP 5 pour une connexion à une base de donnée et une requête simple SQL.Avant grosso modo je codais comme cela dans mes scripts pour faire appel à ma base de donnée MYSQL gràce à PHP :

mysql_connect("HOST","UTILISATEUR","MOT DE PASSE");
mysql_select_db("BASE DE DONEE");
//connexion
$requetesimple = "SELECT * FROM BASEDEDONEE WHERE 1=1 ";
// requête SQL simple dans une variable
mysql_query($requetesimple);
//exécution de la requête

La même chose désormais en PHP 7 après modification :

$conn =mysqli_connect("HOST","UTILISATEUR","MOT DE PASSE","BASE DE DONEE");
//connexion
$requetesimple = "SELECT * FROM BASEDEDONEE WHERE 1=1 ";
// requete SQL simple dans une variable
$res = $conn->query($requetesimple);
//exécution de la requête

En général les autres Fonctions PHP ne changent pas trop

mysql_affected_rows      -> mysqli_affected_rows()                   
mysql_close              -> mysqli_close()                           
mysql_data_seek          -> mysqli_data_seek()            
mysql_errno              -> mysqli_errno()                           
mysql_error              -> mysqli_error()                           
mysql_fetch_array        -> mysqli_fetch_array()            
mysql_fetch_assoc        -> mysqli_fetch_assoc()                   
mysql_fetch_lengths      -> mysqli_fetch_lengths()                 
mysql_fetch_row          -> mysqli_fetch_row()                
mysql_field_seek         -> mysqli_field_seek()          
mysql_free_result        -> mysqli_free_result()                   
mysql_insert_id          -> mysqli_insert_id()                       
mysql_num_rows           -> mysqli_num_rows()                      
mysql_query              -> mysqli_query()                   
mysql_real_escape_string -> mysqli_real_escape_string()        
mysql_select_db          -> mysqli_select_db()              
mysql_set_charset        -> mysqli_set_charset()           

Mais d’autres ne fonctionne plus du tout !

Certaines fonctions ne fonctionnent plus en version 7, c’est le cas de mysql_result()  ! Donc, j’ai du trouver une alternative rapide pour mes scripts PHP de mes applications.Pour faire fonctionner à nouveau cette simple fonction ou du moins avoir son équivalent il faut utiliser une fonction non native de PHP.Voici un aperçu des modifications pour simplement faire la même chose que mysql_result() voici la même chose mais en php7 :

function mysqli_result($res,$row=0,$col=0){
$numrows = mysqli_num_rows($res);
if ($numrows && $row <= ($numrows-1) && $row >=0){
mysqli_data_seek($res,$row);
$resrow = (is_numeric($col)) ? mysqli_fetch_row($res) : mysqli_fetch_assoc($res);
if (isset($resrow[$col])){
return $resrow[$col];
}
}
return false;
}

Cette Fonction fait exactement la même chose que mysql_result() mais comme en php 7 elle n’existe plus pas le choix…

Voila, j’espère vous avoir aidé un minimum.

Bonne journée les codeurs et bon code les amis.

2 commentaires

Etant actuellement en pleine migration php5 vers php7 sur un site créé en 2008, et sans grandes compétences en matière de développement, votre fonction palliative à mysql_result , qui me posait problème , a parfaitement rempli sa mission . Je vous en remercie

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *