Проверка существования таблицы

walker_ag

Новичок
Проверка существования таблицы

Как проверить, какие таблицы существуют, какие нет, если есть возможность подключаться к базе только через скрипт?
 

DiMA

php.spb.ru
Команда форума
существование по известному имени - TABLE EXISTS (в мане по слову 'exists')

получить список всех таблиц - в ман по слову SHOW (могу ошибаться..)

кстати, легко все узнать самому: запускаем визульный меджер МыСКЛя и смотрим, как он это делает (он всегда пишет команды). Я рекомендую самый продвинутый из известных мне - MySQL Front, прога под Offtopic (phpMyAdmin отдыхает).
 

vladis

Guest
> рекомендую самый продвинутый из известных мне - MySQL Front
Мда. Фронт - оно, конечно, круто, но утверждается, что "есть возможность подключаться к базе только через скрипт". Так что я думаю не пойдет.

А по поводу наличия таблиц:

int mysql_list_tables(string database, int [link_identifier] );
mysql_list_tables() берет имя базы данных и указатель результата подобно функции mysql_db_query(). Функция mysql_tablename() должна использоваться, чтобы извлечь фактические имена таблиц с указателя результата.
( PHP 3.0 Manual )

И вообще, RTFM - это полезно. Там прямым текстом даже пример приведен:

<?php
mysql_connect ("localhost");
$result = mysql_list_tables ("wisconsin");
$i = 0;
while ($i < mysql_num_rows ($result))
{
$tb_names[$i] = mysql_tablename ($result, $i);
echo $tb_names[$i] . "<BR>";
$i++;
}
?>
 

walker_ag

Новичок
Спасибо за скрипт, правда он пока не работает..

А что здесь "wisconsin" ?
 

vladis

Guest
Имя базы данных.
Этот скрипт выдран непосредственно из мануала и не работает он скорее всего потому, что mysql_list_tables надо подставить имя своей БД (ты же в курсе, надеюсь, что на одном mysql CЕРВЕРЕ может быть несколько БАЗ ДАННЫХ? )
 

walker_ag

Новичок
Мне дали базу данных, и мне кажется, что на ней я могу создавать столько таблиц, сколько необходимо. Я не прав?

И всё же, что такое winconsis ?
 

vladis

Guest
Ы-ы-ы!!!
Есть сервак MySQL. На этом серваке может быть несколько баз данных (напр. mysql - системная база данных сервера и users - база данных пользователей) В каждой базе данных может быть несколько таблиц. Ну, там, дальше в таблицах - записи, в записях - поля, - это понятно.

Так вот.
int mysql_list_tables(string database, int [link_identifier] );
(эт, между прочим, цитата из моего поста)
database - это именно ИМЯ БАЗЫ ДАННЫХ, в которой ты ищешь таблицы. Ты ж в начале скрипта после mysql_connect() делаешь что-нить вроде mysql_select_db("DBNAME") или mysql_db_query("DBNAME", "query") ?
Эти функции как раз и выбирают текущую базу данных к которой будут проходить все следующие mysql_query(). А mysql_list_tables() базы по-умолчанию не понимает, ей нужно указывать конкретно, где таблицы искать.

А "wisconsin" - это имя базы в этом примере из мануала. У тебя оно, естественно, другое.

Уф. *умываю руки*
 
Сверху