Jaki jest najlepszy sposób sprawdzenia, czy tabela istnieje w MySQL (najlepiej przez PDO w PHP) bez zgłaszania wyjątku. Nie mam ochoty analizować wyników „POKAŻ TABELE LIKE” i tak dalej. Musi istnieć jakieś logiczne zapytanie?
123
Nie znam składni PDO dla tego, ale wydaje się to dość proste:
$result = mysql_query("SHOW TABLES LIKE 'myTable'");
$tableExists = mysql_num_rows($result) > 0;
mysql_*
funkcji, są one oficjalnie przestarzałe , nie są już obsługiwane i zostaną usunięte w przyszłości. Powinieneś zaktualizować swój kod za pomocą PDO lub MySQLi, aby zapewnić funkcjonalność swojego projektu w przyszłości.Jeśli używasz MySQL 5.0 lub nowszego, możesz spróbować:
Wszelkie wyniki wskazują, że tabela istnieje.
Od: http://www.electrictoolbox.com/check-if-mysql-table-exists/
źródło
Używając mysqli stworzyłem następującą funkcję. Zakładając, że masz instancję mysqli o nazwie $ con.
Mam nadzieję, że to pomoże.
Ostrzeżenie: jak sugeruje @jcaron, ta funkcja może być podatna na ataki sqlinjection, więc upewnij się, że twój
$table
var jest czysty lub jeszcze lepiej użyj sparametryzowanych zapytań.źródło
To jest publikowane po prostu, jeśli ktoś przyjdzie szukać tego pytania. Mimo że udzielono na to trochę odpowiedzi. Niektóre odpowiedzi sprawiają, że jest to bardziej skomplikowane, niż powinno.
Dla mysql * użyłem:
W PDO użyłem:
Dzięki temu po prostu wsuwam warunek else do lub. A dla moich potrzeb potrzebuję tylko umrzeć. Chociaż możesz ustawić lub na inne rzeczy. Niektórzy mogą preferować if / else if / else. Oznacza to usunięcie lub dostarczenie if / else if / else.
źródło
Oto moje rozwiązanie, które preferuję podczas korzystania z procedur składowanych. Niestandardowa funkcja mysql do sprawdzenia, czy tabela istnieje w bieżącej bazie danych.
źródło
Ponieważ funkcja „Pokaż tabele” może działać wolno w przypadku większych baz danych, zalecam użycie opcji „OPISUJ” i sprawdzenie, czy w rezultacie otrzymujesz wartość prawda / fałsz
źródło
źródło
Framework Zend
źródło
Jeśli powodem chęci wykonania tego jest warunkowe utworzenie tabeli, wówczas opcja „UTWÓRZ TABELĘ, JEŚLI NIE ISTNIEJE” wydaje się idealna do tego zadania. Dopóki tego nie odkryłem, stosowałem powyższą metodę „DESCRIBE”. Więcej informacji tutaj: MySQL "UTWÓRZ TABELĘ, JEŚLI NIE ISTNIEJE" -> Błąd 1050
źródło
Dlaczego tak trudno to zrozumieć?
źródło