Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak mogę sprawdzić, czy istnieje tabela MySQL z 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...
}

Trzeba przyznać, że jest to bardziej Pythonowe niż idiom PHP, ale z drugiej strony nie musisz się martwić, że masz do czynienia z dużą ilością dodatkowych danych.

Edytuj

Tak więc ta odpowiedź została zaznaczona co najmniej dwa razy od czasu, gdy piszę tę wiadomość. Zakładając, że popełniłem jakiś gigantyczny błąd, poszedłem i uruchomiłem kilka benchmarki , i oto co odkryłem, że moje rozwiązanie jest ponad 10% szybsze niż najbliższa alternatywa, gdy tabela nie istnieje, i ponad 25% szybsze, gdy tabela istnieje:

:::::::::::::::::::::::::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

Próbowałem uruchomić to przeciwko DESC, ale miałem limit czasu po 276 sekundach (24 sekundy na moją odpowiedź, 276 na nieudane uzupełnienie opisu nieistniejącej tabeli).

Na wszelki wypadek przeprowadzam testy porównawcze ze schematem zawierającym tylko cztery tabele i jest to prawie nowa instalacja MySQL (jest to jak dotąd jedyna baza danych). Aby zobaczyć eksport, zajrzyj tutaj .

I WIĘCEJ

To konkretne rozwiązanie jest również bardziej niezależne od bazy danych, ponieważ to samo zapytanie będzie działać w PgSQL i Oracle.

WRESZCIE

mysql_query() zwraca FALSE dla błędów, które nie są "ta tabela nie istnieje".

Jeśli musisz zagwarantować, że stół nie istnieje, użyj mysql_errno() aby uzyskać kod błędu i porównać go z odpowiednim Błędy MySQL .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak poprawnie używać PHP do kodowania obiektu MySQL do formatu JSON?

  2. Przykład wstrzyknięcia PHP/MySQL

  3. Jak ustawić <option selected=selected> ustawioną przez MySQL i PHP?

  4. WYBIERZ wiele wierszy GDZIE spełnia dwa warunki

  5. Porównanie INT bez instrukcji WHERE