Le samedi 2 avril 2005 à 12:22:: Laurent - CyberSDF:: Dev Web
Il y a quelques temps, je devais migrer quelques sites qui avaient été écrit pour fonctionner avec le SGBD/R MySQL4.0 sur une machine ne disposant que de MySQL4.1, seulement cela entraîne quelques complications.
Comme vous le savez (si vous ne le savez pas, je vais vous l'apprendre) les fonctions PHP permettant d'accéder a cette base de données ne sont pas les mêmes en suivant la version.
Si seulement il n'y avait que le i qui changeait, la migration serait simple, un simple rechercher/remplacer dans tous les fichiers et pouf on en parle plus. Mais ce n'est pas aussi simple que cela ; En effet, les paramètres se sont pas toujours dans le même ordre.
J'entends déjà certains dire si les sites avaient été développés en objet ça aurait été simple, une classe à ré écrire et zoup
, oui mais la on y peu rien et les sites ont été développés en procédural[1].
Il est bien évidement inconcevable de reprendre tous les sites un par un et les corriger à la main, donc que faire ?
J'ai donc pensé à mettre dans un fichier qui sera inclus, ça :
<?php function mysql_connect($host,$user,$pass) { return mysqli_connect($host,$user,$pass); } function mysql_select_db($db,$cnx) { return mysqli_select_db($cnx,$db); } function mysql_query($sql,$cnx) { return mysqli_query($cnx,$sql); } function mysql_fetch_array($result) { return mysqli_fetch_array($result); } function mysql_free_result($result) { mysqli_free_result($result); } etc. ?>
Ainsi le script bateau du genre :
<?php $cnx = mysql_connect("localhost", "user", "pass") or die("Impossible de se connecter : " . mysql_error()); mysql_select_db("test",$cnx); $result = mysql_query("SELECT id, name FROM toto",$cnx); while ($row = mysql_fetch_array($result)) { echo "<p>$row\[id\] => $row\[name\]</p>"; } mysql_free_result($result); ?>
fonctionnera toujours.
Ce n'est bien sur pas super idéal, mais cela fonctionne plutôt correctement et les performances du serveur ne s'en voient pas imputées.
[1] programmation à l'aide de procédures et fonctions appelées dans un ordre séquentiel
Blogmark it ! :: trackback fermés :: fil rss des commentaires
1.
Le jeudi 10 mai 2007 à 02:17 ::
Cakeby
Ca ne fonctionne pas pour ma part. Cela me fait une erreur disant qu'il est impossible de redéfinir ces fonctions.
2.
Le jeudi 12 juillet 2007 à 16:32 ::
LupusMichaelis
Pour éviter l'erreur que décrit Cakeby, il faut désactiver l'extension mysql_.
Toutes les fautes d'orthographes présentes sur ce site sont protégées par la licence
Creative common
|
|
|
|
Design décliné de [ON]Simple par [ NikO ]
Hébergé par Typhon.Network