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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как определить существует ли таблица

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
SunChase
Отправлено: 21 Октября, 2010 - 20:22:47
Post Id



Гость


Покинул форум
Сообщений всего: 94
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Здравствуйте. Пытаюсь написать один плагин,и в его сетап файл применить сразу и SQL запрос на создание таблицы. Столкнулся с такой сложностью реализации как "проверка, существует ли таблица".

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

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


З.Ы. я знаю что можно попросту переименовать таблицу чтобы небыло совпадений.Просто для себя интерестно - можно ли сделать именно так.

(Отредактировано автором: 21 Октября, 2010 - 20:26:18)

 
 Top
DeepVarvar Супермодератор
Отправлено: 21 Октября, 2010 - 20:43:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Если попытаться создать базу или таблицу в базе с уже существующим именем, и даже с какими либо данными, то мускуль просто проигнорит эти запросы ничего нового не создавая и не делая я-ля "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
 
 Top
SunChase
Отправлено: 21 Октября, 2010 - 20:58:36
Post Id



Гость


Покинул форум
Сообщений всего: 94
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




DeepVarvar.Спасибо за ответ.Описанная функция чуток "невоспринялась" системной,но зато по той ссыле,что вы дали, я нашёл то что мне нужно было:

Цитата:
CREATE TABLE IF NOT EXISTS ИМЯ_ТАБЛИЦЫ
 
 Top
U-238
Отправлено: 17 Января, 2013 - 22:36:36
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




есть еще одно решение
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 нужно было проверить существование таблицы с минимальной нагрузкой на сервер и плюс чтобы при отсутствии записей в таблице тоже работало

(Отредактировано автором: 17 Января, 2013 - 23:02:26)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB