2009-08-04 7 views
2

Dans le code ci-dessous, j'autorise les utilisateurs à ajouter des tables à une base de données MySQL. Existe-t-il un moyen d'imprimer les 25 tableaux les plus récents?Impression des 25 tables les plus récemment ajoutées

Merci à l'avance,

John

$table = mysql_real_escape_string($_POST['name']); 

$query = "CREATE TABLE `$table` (id INT(11) NOT NULL auto_increment, site VARCHAR(350) NOT NULL, cat1 BIGINT(9) NOT NULL, cat2 BIGINT(9) NOT NULL, PRIMARY KEY(id), UNIQUE (site))"; 
$result = mysql_query($query) or die(mysql_error()); 

Répondre

3
select TABLE_NAME 
    from INFORMATION_SCHEMA.TABLES 
where TABLE_SCHEMA='your_db_name` 
order by CREATE_TIME desc 
limit 25 

Ceci est pour MySQL version 5 et supérieure. Il listera les tables créées par vos utilisateurs et vous, cependant.

+0

Cela semble fonctionner en théorie, mais cela me rapporte des valeurs incorrectes en pratique. Il semble que cela indique quand une rangée a été insérée pour la dernière fois ou quelque chose comme ça plutôt que quand elle a été créée. Ceci est étrange car il devrait contenir l'heure de création de la table selon http://dev.mysql.com/doc/refman/5.1/fr/show-table-status.html –

+0

Cela fonctionne correctement pour moi pour MyISAM/InnoDB les tables. Ne fonctionne pas pour "Memory" (create_time est null), ce qui, je suppose, est logique. – ChssPly76

+0

merci ... comment est-ce que j'imprimerais cette requête sous la forme d'une table à 25 colonnes à une colonne? –

1

Vous pouvez, mais je vous conseille de créer une table d'historique ou de la vérification de toutes les créations de table (et autres activités pertinentes). Par exemple:

$now = time(); 
$user = $_SESSION['user']; 
$sql = <<<END 
INSERT INTO table_history 
(table, user, action, action_time) 
VALUES 
('$table', '$user', 'CREATE', $now) 
END; 
mysql_query($sql) or die($sql . ': ' . mysql_error()); 

Aussi, je serais probablement pas la création d'une suggère table séparée pour chaque instance que vous devez l'utiliser à moins qu'ils vont être vraiment grand. Créer une autre colonne pour identifier l'utilisateur, l'organisation ou autre est souvent (mais pas toujours) une meilleure approche.

Questions connexes