2009-08-04 2 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/en/show-table-status.html –

+0

에 따라 테이블의 생성 시간을 포함해야하기 때문에 이상합니다. MyISAM/InnoDB에서 올바르게 작동합니다 테이블. "Memory"(create_time이 null 임)에서 작동하지 않습니다. – ChssPly76

+0

감사합니다 ...이 쿼리를 한 열, 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()); 

, 아마 당신은 그들이 정말 크게려고하지 않는 한 사용할 필요가 각 인스턴스에 대해 별도의 테이블을 생성하지 좋을 것. 사용자, 조직 등을 식별하는 다른 열을 만드는 것이 더 나은 방법입니다.

관련 문제