sql >> Database teknologi >  >> RDS >> Mysql

Hvordan kan jeg kontrollere, om der findes en MySQL-tabel med PHP?

// Select 1 from table_name will return false if the table does not exist.
$val = mysql_query('select 1 from `table_name` LIMIT 1');

if($val !== FALSE)
{
   //DO SOMETHING! IT EXISTS!
}
else
{
    //I can't find it...
}
 

Det er ganske vist mere pytonisk end PHP-formsproget, men på den anden side behøver du ikke bekymre dig om at håndtere en rigelig mængde ekstra data.

Rediger

Så dette svar er blevet markeret mindst to gange på det tidspunkt, jeg skriver denne besked. Forudsat at jeg havde lavet en gigantisk fejl, gik jeg og kørte nogle benchmarks , og det er hvad jeg fandt ud af, at min løsning er over 10 % hurtigere end det nærmeste alternativ, når tabellen ikke eksisterer, og den er over 25 % hurtigere, når tabellen eksisterer:

:::::::::::::::::::::::::BEGINNING NON-EXISTING TABLE:::::::::::::::::::::::::::::: 23.35501408577 for bad select 25.408507823944 for select from schema num rows -- calls mysql_num_rows on select... from information_schema. 25.336688995361 for select from schema fetch row -- calls mysql_fetch_row on select... from information_schema result 50.669058799744 for SHOW TABLES FROM test :::::::::::::::::::::::::BEGINNING EXISTING TABLE:::::::::::::::::::::::::::::: 15.293519973755 for good select 20.784908056259 for select from schema num rows 21.038464069366 for select from schema fetch row 50.400309085846 for SHOW TABLES FROM test

Jeg prøvede at køre dette mod DESC, men jeg havde en timeout efter 276 sekunder (24 sekunder for mit svar, 276 for ikke at fuldføre beskrivelsen af ​​en ikke eksisterende tabel).

For god ordens skyld benchmarker jeg mod et skema med kun fire tabeller i det, og dette er en næsten frisk MySQL-installation (dette er den eneste database indtil videre). For at se eksporten, se her .

OG YDERLIGERE

Denne særlige løsning er også mere databaseuafhængig, da den samme forespørgsel vil fungere i PgSQL og Oracle.

ENDELIG

mysql_query() returnerer FALSE for fejl, der ikke er "denne tabel eksisterer ikke".

Hvis du skal garantere, at bordet ikke eksisterer, brug mysql_errno() for at få fejlkoden og sammenligne den med den relevante MySQL-fejl .



  1. Fejl under tilføjelse af standby

  2. Installer lagret procedure på flere databaser

  3. Hvordan erklærer man en variabel i MySQL?

  4. Sådan rettes ERROR 1130 (HY000):Host har ikke tilladelse til at oprette forbindelse til denne MySQL-server