Par soucis de performance, il m'arrive de temps en temps d'exporter le contenu d'une table MySQL pour en créer un tableau PHP associatif. Disposant ainsi des données en mémoire, ceci me permet, par exemple lors d'une requête de sélection, d'épargner une jointure avec cette table. Bien entendu, ceci n'est réellement intéressant que pour les tables de petite taille (table de devises, de pays, etc...)
Malgré la petite taille de ces tables, la procédure pour générer le code du tableau est généralement fastidieuse à moins de disposer d'un petit script "fait maison" sous la main.
J'ai donc décidé de publier un modeste outil utilisable sous la forme d'un plugin pour phpMyAdmin. Il ajoute la fonctionnalité désirée (cf. checkbox "PHP Array") à la liste des formats disponibles pour l'export des bases de données.
Pour l'installation, rien de plus simple. Il suffit de télécharger le plugin ici et d'extraire le fichier PHP dans le répertoire phpMyAdmin/libraries/export/.
Par contre, le script étant toujours en version beta, tout rapport de bug ou suggestion d'amélioration sera vivement apprécié. Merci d'avance !
Vos commentaires
en tout cas merci je reviendrai :)
La version 0.2b corrige désormais ce problème.
INSERT INTO `geof` (`id`, `xx`, `n`) VALUES
(1, 'toto', 1),
(2, 'gg', NULL),
(3, 'aaa', NULL),
(4, 'pioioi', 2);
donnera avec le plug-in PHP-Array :
$geof = array(
array('id'=>1,'xx'=>'toto','n'=>1),
array('id'=>2,'xx'=>'gg',),
array('id'=>3,'xx'=>'aaa',),
array('id'=>4,'xx'=>'pioioi','n'=>2)
);
Ce qui génère une erreur de syntaxe.
Merci de corriger asap.
Thanks for providing the PHP export function!
It was the best choice for us, as we needed actually JSON, and the format of PHP is very close. I just needed to added some RegExp work to convert to JSON.
Doing this, I found found a bug that most likely effects all exports with certain data.
The export file said: version 0.2b. Sorry, if this already has been solved - I could not update the myPhpAdmin to check if it is.
When deciding whether exporting string or number, the decision is made on base of what
is_numeric() returns for the actual data.
Unfortunately, data is identified as numeric, even if it can't be represented by float exactly:
A telephone number like 0721.123456 is identified as numeric. The export code generates to
=>0721.123456
instead of
=>'0721.123456'
which causes information loss (in best case the leading 0, in worst case the import parser does not accept a 0 at the beginning of float)
Would be great to have this bug fixed in future versions.
Btw.: it would be very easy to provide JSON export on base of your script. Since I'm not a PHP export, I'd rather not provide this to the community. But maybe you like. Would be great, too!
Thanks