Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как определить существует ли таблица
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Как определить существует ли таблица

Страниц (1): [1]
 

1. SunChase - 21 Октября, 2010 - 20:22:47 - перейти к сообщению
Здравствуйте. Пытаюсь написать один плагин,и в его сетап файл применить сразу и SQL запрос на создание таблицы. Столкнулся с такой сложностью реализации как "проверка, существует ли таблица".

Нашёл у вас на форуме способ решения с использованием "Show tables Like ".Слегка неподходит,так как есть вероятность что в базе данных есть таблица, которая начинается также как и нужная для плагина.Тоесть нужно точное определение - существует ли таблица именно с такимто названием.

Заранее благодарен


З.Ы. я знаю что можно попросту переименовать таблицу чтобы небыло совпадений.Просто для себя интерестно - можно ли сделать именно так.
2. DeepVarvar - 21 Октября, 2010 - 20:43:47 - перейти к сообщению
Если попытаться создать базу или таблицу в базе с уже существующим именем, и даже с какими либо данными, то мускуль просто проигнорит эти запросы ничего нового не создавая и не делая я-ля "UPDATE" уже имеющейся таблицы


<Шелезяка[work]> подскажите плиз как проверить существует ли таблица в базе mysql
<Есть> if (mysql_query('DROP TABLE таблица')) echo "таблица существовала";

PHP:
скопировать код в буфер обмена
  1. function mysql_table_seek($tablename, $dbname)
  2. {
  3.     $table_list = mysql_query("SHOW TABLES FROM `".$dbname."`");
  4.     while ($row = mysql_fetch_row($table_list)) {
  5.         if ($tablename==$row[0]) {
  6.             return true;
  7.         }
  8.     }
  9.     return false;
  10. }


Источник тута http://www[dot]sql[dot]ru/forum/actualth[dot][dot][dot]mp;hl=drop+table
3. SunChase - 21 Октября, 2010 - 20:58:36 - перейти к сообщению
DeepVarvar.Спасибо за ответ.Описанная функция чуток "невоспринялась" системной,но зато по той ссыле,что вы дали, я нашёл то что мне нужно было:

Цитата:
CREATE TABLE IF NOT EXISTS ИМЯ_ТАБЛИЦЫ
4. U-238 - 17 Января, 2013 - 22:36:36 - перейти к сообщению
есть еще одно решение
PHP:
скопировать код в буфер обмена
  1. function existsTable($table) {
  2.         $res = mysql_query("SELECT * FROM `".$table."` LIMIT 1");
  3.         $err_no = mysql_errno();
  4.         return ($err_no != '1146' && $res = true);
  5. }

когда писал движок на php нужно было проверить существование таблицы с минимальной нагрузкой на сервер и плюс чтобы при отсутствии записей в таблице тоже работало

 

Powered by ExBB FM 1.0 RC1