2013-06-07 2 views
0

ID, 내용, 날짜 및 제목 열이있는 테이블 (메일)이있는 MySQL 데이터베이스가 있습니다. 테이블이 존재하는지 확인하는 옵션이 있는지 알고 싶습니다. 그러면 열을 추가하려는 경우 예를 들어 테이블을 변경합니다.존재하지 않는 테이블 테이블 만들기 다른 테이블

$sql=mysql_query(
     "SELECT something FROM Mail"); 

if (!$sql){ 

mysql_query("ALTER TABLE Mail ADD Test VARCHAR(150) DEFAULT NULL"); 

}ELSE{ 

mysql_query("CREATE TABLE if not exists `Mail` (
`ID` int(11) NOT NULL AUTO_INCREMENT, 
`Content` longtext, 
`Datum` varchar(15) DEFAULT NULL, 
`Titel` varchar(150) DEFAULT NULL, 
`Test` varchar(150) DEFAULT NULL, 

PRIMARY KEY (`ID`) 
) "); 

} 

그래서 내가 거기에이 할 수있는 간단한 방법이며, 어쩌면 1 개 쿼리 (아마) 알고 싶습니다 :이 찾을 수있는 유일한 해결 방안은 다음과 같이이었다? 누구든지이 일을하는 더 나은/더 쉬운 방법을 안다면 그것은 좋을 것입니다!

그리고 Mysql_은 사용되지 않지만 곧 PDO로 전환합니다!

답변

0

    • CREATE TABLE IF NOT EXISTS ... 물건
    • ALTER TABLE ... 물건을하지 않는다는 것을,
      • 스크립트를 만드는 아주 잘 작동하는,이 ungly이에 대한 해킹이 을 무시하면 오류가 발생합니다.
    • file_put_contents(__FILE__,''); 포함 수행하여 자살한다.

    처음 실행하면 수행해야 할 작업이 수행되고 나중에 실행하면 빈 파일이 포함됩니다. IF NOT EXISTS consition은 한 번만 true이고, ALTER TABLE은 실패 할 것이므로 동시에 첫 번째 실행도 문제가되지 않습니다.

    테이블이 없거나 잘못된 버전의 테이블에서 원하는 버전으로의 추악한 작동 경로를 제공합니다.

  • +0

    제안 사항은 Thnx이지만 테이블이 꽤 많기 때문에 이것은 실제로 옵션이 아닙니다. 나는 그것이 때때로 유용 할 수 있기 때문에 그것을 염두에 둘 것이다! – Daanvn

    +0

    그냥 분명히하기 위해서 : 당신은 테이블 당 ** ** 하나를 생성합니다. –

    2

    존재하지 않는 테이블을 변경하려고하면 오류가 발생합니다.

    $res = mysql_query('ALTER TABLE Mail...'); 
    if (!res) { 
        mysql_query('CREATE TABLE Mail...'); 
    } 
    

    을 또는 당신은 더 hackish 갈 수 있습니다 :이 충분이 코드는 정말 나쁜 냄새 것을 mentionning을 자제하지 못할

    mysql_query('CREATE TABLE Mail IF NOT EXISTS...'); // does nothing if table already exists 
    mysql_query('ALTER TABLE Mail ADD Test...'); // does nothing if the column already exists 
    

    . 논리의 심각한 재 작업을 권장하지 않는 유일한 경우는 자동화 된 설치/업그레이드 절차에만 관련된 경우입니다.

    관련 문제