ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

[PHP] Подскажите как лучше проверить, существует ли таблица?
  #1  
Старый 19.02.2009, 14:00
-=Static=-
Участник форума
Регистрация: 12.11.2006
Сообщений: 213
Провел на форуме:
347573

Репутация: 185
По умолчанию [PHP] Подскажите как лучше проверить, существует ли таблица?

У меня есть несколько вариантов и все вообщем-то работают, но какой корректнее и логичней???

1.
PHP код:
function CheckTableExists ($TableName)
    {
        
$query "SELECT COUNT(*) FROM `$TableName`";
        
$db mysql_query($query) or return false;
        return 
true;
    } 
Если функция вернет что-то, значит таблица есть, иначе нету

2.
PHP код:
function CheckTableExists ($TableName)
    {
        
$query "SHOW TABLES LIKE '$TableName'";
        
$db mysql_query($query) or die(mysql_error());
        
$c mysql_num_rows($db);
        if(!
$c) return false;
        return 
true;
    } 
3. Использовать IF EXIST.

Может еще кто-то скажет как проверить???
 
Ответить с цитированием

  #2  
Старый 19.02.2009, 14:08
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

PHP код:
<?php

Function chek($table) {
if(
$db == mysql_query("select count(*) from $table")) return true;
else return 
false;
}

if (
check("Новости")) echo 'Таблица существует';
else echo 
'Нет такой таблицы';

?>

Последний раз редактировалось Pashkela; 19.02.2009 в 14:13..
 
Ответить с цитированием

  #3  
Старый 19.02.2009, 14:10
-=Static=-
Участник форума
Регистрация: 12.11.2006
Сообщений: 213
Провел на форуме:
347573

Репутация: 185
По умолчанию

Цитата:
Сообщение от Pashkela  
PHP код:
if($db == mysql_query("select * from table")) return true;
else return 
false
Это тоже самое что мой 1-й вариант...

-------------------------------------

Pashkela, Я спрашивал в сабже "Подскажите как ЛУЧШЕ проверить," и предложил варианты, в ответ хотел бы видеть либо вариант который я не написал либо номер варианта который вы считаете более корректным.

Последний раз редактировалось -=Static=-; 19.02.2009 в 14:17..
 
Ответить с цитированием

  #4  
Старый 19.02.2009, 14:15
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

ну я переделал децл, ну в общем это самас точная проверка, через count полей, т.к. таблица может быть, но полей может не быть, так что если она есть и вернет ноль = значит все-равно она есть, а обычный селект не поможет точно узнать. Плюс mysql_error тут нафинг не вплелся. Именно по этому мой вариант отличается от твоего и является корректным

Последний раз редактировалось Pashkela; 19.02.2009 в 14:20..
 
Ответить с цитированием

  #5  
Старый 19.02.2009, 14:21
-=Static=-
Участник форума
Регистрация: 12.11.2006
Сообщений: 213
Провел на форуме:
347573

Репутация: 185
По умолчанию

Цитата:
Сообщение от Pashkela  
ну я переделал децл, ну в общем это самас точная проверка, через count полей, т.к. таблица может быть, но полей может не быть, так что если она есть и вернет ноль = значит все-равно она есть, а обычный селект не поможет точно узнать. Плюс mysql_error тут нафинг не вплелся. Именно по этому мой вариант отличается от твоего и является корректным
А я что написал в первом варианте??? О_о
 
Ответить с цитированием

  #6  
Старый 19.02.2009, 14:24
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

Ну в общем о чем спор, да, этот вариант самый правильный и корректный, на мой взгляд, конечно
 
Ответить с цитированием

  #7  
Старый 19.02.2009, 14:30
Zedi
Постоянный
Регистрация: 06.06.2007
Сообщений: 335
Провел на форуме:
1487377

Репутация: 392
Отправить сообщение для Zedi с помощью ICQ
По умолчанию

Я бы вставил в скрипт измерение времени выполнения и посмотрел бы по времени какой самый быстрый, но так способ 2 кажется норм
 
Ответить с цитированием

  #8  
Старый 19.02.2009, 15:44
-=Static=-
Участник форума
Регистрация: 12.11.2006
Сообщений: 213
Провел на форуме:
347573

Репутация: 185
По умолчанию

Цитата:
Сообщение от b3  
Как бы по изощреннее написать ето называеться))

Оптимальный вариант. Часть кода из инстал файла:
PHP код:
mysql_query("CREATE TABLE IF NOT EXISTS `".$TABLENAME."` ( 
Такой вариант не пойдет, надо именно проверку сделать... Логика такая:

ЕСЛИ (Таблица существует) -> Набираем выборку
ИНАЧЕ ничего не делаем
 
Ответить с цитированием

  #9  
Старый 21.02.2009, 19:07
-=Static=-
Участник форума
Регистрация: 12.11.2006
Сообщений: 213
Провел на форуме:
347573

Репутация: 185
По умолчанию

Все?? Больше мнений нету??? о_О
 
Ответить с цитированием

  #10  
Старый 21.02.2009, 20:32
oRb
Members of Antichat - Level 5
Регистрация: 09.05.2008
Сообщений: 304
Провел на форуме:
7875940

Репутация: 2362
По умолчанию

Цитата:
Сообщение от -=Static=-  
Все?? Больше мнений нету??? о_О
если мускул пятый и есть доступ к information_schema, почему бы к ней не обратиться:
Код:
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| test           | 
+----------------+
1 row in set (0.00 sec)

mysql> SELECT 1 FROM information_schema.TABLES WHERE `TABLE_NAME` LIKE 'test' and TABLE_SCHEMA LIKE database();
+---+
| 1 |
+---+
| 1 | 
+---+
1 row in set (0.01 sec)

mysql> SELECT 1 FROM information_schema.TABLES WHERE `TABLE_NAME` LIKE 'test1' and TABLE_SCHEMA LIKE database();
Empty set (0.00 sec)
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать свой порносайт и получить от него прибыль CrazyStudentS_Mi}{ Статьи 55 16.05.2010 00:58
Как продвигать блоги [ANGEL] Статьи 12 05.04.2010 14:29
Как стать хакером! foreva Болталка 19 12.12.2007 00:12
Установка Windoze глазами линуксоида (100% факты) nerezus Болталка 47 16.10.2005 15:06
Внедрение Sql кода с завязанными глазами k00p3r Чужие Статьи 0 12.06.2005 20:48



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ