2009-08-04 9 views
2

以下のコードでは、ユーザーがMySQLデータベースにテーブルを追加できるようにしました。最近追加された25のテーブルを印刷する方法はありますか?事前に最近追加されたテーブル25個を出力する

おかげで、

ジョン

$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()); 

答えて

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

これは、MySQLバージョン5以上です。あなたのユーザーによって作成されたテーブルはと表示されます。

+0

これは理論的にはうまくいくはずですが、実際には私にとって間違った値を報告します。行が最後に挿入されたときや作成されたときのようなものが記述されているようです。これは、http://dev.mysql.com/doc/refman/5.1/ja/show-table-status.html –

+0

に従ったテーブルの作成時間を含んでいる必要があるため、奇妙です。MyISAM/InnoDBのために正しく動作します。テーブル。 "メモリ"(create_timeがnull)で動作しません。これは意味があると思います。 – ChssPly76

+0

ありがとう...私はこの列を1列、25行のテーブルとして印刷しますか? –

1

あなたは、私はすべてのテーブルの作品(およびその他の関連活動)の歴史や監査テーブルを作成するお勧めすることができます。たとえば:

$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()); 

はまた、私はおそらく、彼らは本当に大きなものになるだろうしない限り、あなたがそれを使用する必要があるインスタンスごとに別々のテーブルを作成しないことをお勧めしたいです。ユーザー、組織などを識別するための別の列を作成して、常にそうとは限りません。

関連する問題