10. marts 2007 - 11:58Der er
9 kommentarer og 1 løsning
tjekke om tabel findes og om den ser rigtig ud
er der en måde hvorpå jeg kan tjekke om en tabel er oprettet og om den ser ud som den skal.
f.eks. jeg har en install fil til et cms i denne oprettes tabellen brugere
CREATE TABLE `brugere` ( `brugerid` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `brugernavn` VARCHAR( 255 ) NOT NULL , `password` VARCHAR( 255 ) NOT NULL , `email` VARCHAR( 255 ) NOT NULL , `fornavn` VARCHAR( 255 ) NOT NULL , `efternavn` VARCHAR( 255 ) NOT NULL , `birth` DATE NOT NULL , `web` VARCHAR( 255 ) NOT NULL , `interesser` TEXT NOT NULL , `gruppe` VARCHAR( 255 ) NOT NULL DEFAULT 'bruger', `oprettet` DATETIME NOT NULL , `laston` DATETIME NOT NULL , `ontid` DATETIME NOT NULL , `online` VARCHAR( 3 ) NOT NULL DEFAULT 'nej' ) ENGINE = innodb;
hvis der så på et tidspunkt skal insættes flere felter i denne tabel ville det være smart bare at rette den til
CREATE TABLE `brugere` ( `brugerid` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `brugernavn` VARCHAR( 255 ) NOT NULL , `password` VARCHAR( 255 ) NOT NULL , `email` VARCHAR( 255 ) NOT NULL , `fornavn` VARCHAR( 255 ) NOT NULL , `efternavn` VARCHAR( 255 ) NOT NULL , `birth` DATE NOT NULL , `web` VARCHAR( 255 ) NOT NULL , `interesser` TEXT NOT NULL , `city` VARCHAR( 255 ) NOT NULL , `postnr` VARCHAR( 4 ) NOT NULL , `gruppe` VARCHAR( 255 ) NOT NULL DEFAULT 'bruger', `oprettet` DATETIME NOT NULL , `laston` DATETIME NOT NULL , `ontid` DATETIME NOT NULL , `online` VARCHAR( 3 ) NOT NULL DEFAULT 'nej' , `mailkode` VARCHAR( 255 ) NOT NULL DEFAULT '0' ) ENGINE = innodb;
og når siden så loades tjekke scriptet selv for om alle felter er der i tabellen og hvis ikke skal de oprettes. Hvis man ikke kan tjekke om felterne er oprettet kan man så bare tjekke om tabellen findes?
$result = mysql_query("SHOW COLUMNS FROM tabel_test"); if (!$result) {
$opret_test = mysql_query(" CREATE TABLE `tabel_test` ( `test_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `bruger` VARCHAR( 255 ) NOT NULL ) ENGINE = innodb; ") or die(mysql_error());
} if (mysql_num_rows($result) > 0) { while ($row = mysql_fetch_assoc($result)) {
$udvid_test = mysql_query(" ALTER TABLE `tabel_test` ADD `pass` VARCHAR( 255 ) NOT NULL DEFAULT '0' AFTER `test_id` ; ") or die(mysql_error()); } }
der kommer denne fejl Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\wamp\www\demo\tabel-test.php on line 45 hvor linie 45 er denne if (mysql_num_rows($result) > 0) {
jeg er heller ikke helt sikker på at det efter linien er rigtig. den opretter fint tabellen først, men derefter skal den jo oprette de felter som ikke findes
1. Først henter du fra en tabel som måske ikke findes ! Brug evt. mysql_list_tables() for at tjekke om den findes 2. Bruger du ikke mysql_list_tables(), så husk at køre din $result query igen, efter oprettelse, inde i if(!$result). 3. Om feltet findes i forvejen, da er du nødt til at ha' et array med nye feltnavne, og så som min. bruge $row["Field"] til endnu et array, for at sammenligne forskelle på de to arrays
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.