2013-08-05 28 views
7

Próbuję sprawdzić, czy tabela istnieje, a jeśli tak, to wykonaj niektóre czynności. Wciąż dostaję błąd informujący mnie, że tabela nie istnieje, zamiast wypełniać czek. Oto kod:Sprawdzanie, czy istnieje tabela na MySQL

$tableExists = $db->prepare("SHOW TABLES LIKE $table_array"); 
$tableExists->execute(); 
if($tableExists->rowCount() > 0) { 
    // do some code 
} else { 
    echo "Unable to add because table does not exists"; 
} 

UPDATE: za sugestie poniżej, teraz wykonać następujące czynności:

$tableExists = $db->prepare("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ?"); 
$tableExists->execute(array($table_array)); 
if(!is_null($tableExist)) { 
    //do something 
} else { 
    echo "table does not exist; 
} 

Jednakże, jeżeli oświadczenie nie wydają się działać w celu ustalenia, czy tabela istnieje, czy nie . Co jeszcze mogłem zrobić?

Odpowiedz

10

Spróbuj użyć information_schema zapytać, czy tabela istnieje. Coś jak

SELECT 
    * 
FROM 
    information_schema 
WHERE TABLE_NAME = "$table_array" 

Spójrz przez wszystkiego information_schema posiada, będzie mile zaskoczony przez informacje, które są zawarte na temat baz danych :)

+1

To ... Jest ... Niesamowite ... I muszę powiedzieć, że wziąłem ten stół jako część phpMyAdmin nachalnych tabel ... :) – Salketer

+0

tak "aprove", że odpowiedź ... – jaczes

+0

Nazywam się Alfred Salketer Arengard (Tak, wiem ...) i "aprobuję" tę odpowiedź ... @jaczes;) – Salketer

1
if(mysql_num_rows(mysql_query("SHOW TABLES LIKE '".$table."'"))==1) 
    echo "Table exists"; 
else echo "Table does not exist"; 

ref: check if MySQL table exists or not

+0

Dzięki, szukałem i nie znalazłem innej odpowiedzi – Danconia

+0

Dlaczego wszystkie te minusy głosów? Naprawia problem ... Nie? – Salketer

+0

czy wiesz, w jaki sposób mogę sprawdzić, czy tabela istnieje z uwzględnieniem powyższej aktualizacji? – Danconia

0

Spróbuj tego:

wybierz przypadek, gdy (SELECT count (*) z INFORMATION_SCHEMA.TABLES gdzie następnie 'istnieje' TABLE_NAME = 'biura') = 1 else 'nie istnieje' kończy

+0

Witam, czy mógłbyś to wyjaśnić? To jest to, co mam teraz, po prostu nie wiem, jak sprawdzić, czy wynik dla zapytania jest ważny (tabela istnieje), czy nie. $ tableExists = $ db-> prepare ("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME =?"); $ tableExists-> execute (array ($ table_array)); if (! is_null ($ tableExist)) {// wykonaj kod} – Danconia

-1

Spróbuj tego:

select * from table_schema //this is your database name  
where table_name // your table name  
= '$table_array' 

Mam nadzieję, że to zadziała.

Powiązane problemy