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

[mysql 4] можно ли вывести комманду show tables в таблицу или файл?
  #1  
Старый 08.01.2008, 00:33
Аватар для je0n
je0n
Постоянный
Регистрация: 14.05.2006
Сообщений: 334
Провел на форуме:
1543521

Репутация: 272
Отправить сообщение для je0n с помощью ICQ
По умолчанию [mysql 4] можно ли вывести комманду show tables в таблицу или файл?

сабж. ну и если можно, то как?
 
Ответить с цитированием

  #2  
Старый 11.01.2008, 00:40
Аватар для dinar_007
dinar_007
Флудер
Регистрация: 18.01.2005
Сообщений: 2,298
Провел на форуме:
13936387

Репутация: 1844


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

Ты хочешь из консоли вывести или как? Не совсем понятен сам вопрос... Пиши конкретней, что да как (не "сабж", а вопрос в развёрнутый вопрос в самой теме, а не в её названии)... Если я тебя правильно понял, то ты создаёшь таблицу со столбцом tables и хочешь командой show tables заполнить строки этой таблицы в столбце tables?
Вот тут скрипт "сварганил" на скорую руку, который обращается к базе и выводит show tables на экран...
Код:
#!c:/perl/bin/perl
use CGI qw(:all);
use DBI;
use strict;

my $db_user_name = 'root';       #    Логин в базе
my $db_password = 'dfvgbh';      #   Пароль
my $basename="profpersonal";
my $hosto="localhost";

my $dsn = "DBI:mysql:$basename:$hosto";
my $dbh = DBI->connect($dsn, $db_user_name, $db_password);


print "Content-type: text/html\n";
print "Cache-Control: no-store, no-cache\n";
print "Expires: Thu, 01 Jun 2006 18:00:00 GMT\n";

sub  send_to_base        #Посылает в базу первый, если второй не равен "nr"  возвращает двумерный массив из базы. Добавляет две записи в массив журнала  - Запрос и ответ

     {
       my @return_array=send_to_base_temp($_[0]);
       my $error_message=$dbh->errstr;
       return @return_array;
     }

sub  send_to_base_temp        #Посылает в базу первый, если второй не равен "nr"  возвращает двумерный массив из базы. Добавляет две записи в массив журнала  - Запрос и ответ

     {
          my @temp;
          my $qwery=$_[0];
          my $no_return=$_[1];
          my $sth = $dbh->prepare($qwery);
          my $rv=$sth->execute();

          if ($no_return ne "nr")
            {
              my $count_row=0;
              while ( (my @qwery_row=$sth->fetchrow_array())and ($count_row<100000))
                {
                   my $count_col=0;
                   while(($count_col<=$#qwery_row) and ($count_col<100))
                     {
                        $temp[$count_row][$count_col]=$qwery_row[$count_col];
                        $count_col++;
                     }
                   $count_row++
                }
               return @temp;
            }
     }





send_to_base('set names cp1251;', 'nr');
my @return_array=send_to_base('show tables;');
my $print_string;
for (my$i=0;$i<=$#return_array;$i++)
   {
   $print_string.="$return_array[$i][0]<br>";
   }



print <<END_OF_BEGIN;

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script language="JavaScript" src="/frames.js"></script>
<title></title>
<meta http-equiv="refresh" content="2; url=/cgi-bin/logout.cgi; target=_top" >



</head>
<body>
$print_string
</body>
</html>

END_OF_BEGIN
Под БД и под перл сам подправишь... Требуется DBI + DBD MySQL...

Последний раз редактировалось dinar_007; 11.01.2008 в 01:38..
 
Ответить с цитированием

  #3  
Старый 11.01.2008, 01:09
Аватар для groundhog
groundhog
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме:
2238549

Репутация: 1318


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

je0n, если тебя интересует возможность вывода запроса SHOW TABLES в файл средствами SQL (что-то типа SELECT ... INTO OUTFILE '...' от пользователя у которого есть file_priv), то это невозможно... Зато ты можешь на том же самом PHP обойти результат этого запроса и построчно записать в файл... Но конструкции вида SELECT * FROM (SHOW TABLES) и прочие - НЕВОЗМОЖНЫ!
 
Ответить с цитированием

  #4  
Старый 11.01.2008, 01:42
Аватар для dinar_007
dinar_007
Флудер
Регистрация: 18.01.2005
Сообщений: 2,298
Провел на форуме:
13936387

Репутация: 1844


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

Вот вроде довёл до ума... Записывает в файл...
Код:
#!c:/perl/bin/perl
use CGI qw(:all);
use DBI;
use strict;

my $db_user_name = 'root';       #    Логин в базе
my $db_password = 'dfvgbh';      #   Пароль
my $basename="profpersonal";     #    имя базы
my $hosto="localhost";           #   Где она
my $filename="from_base.txt";


my $dsn = "DBI:mysql:$basename:$hosto";
my $dbh = DBI->connect($dsn, $db_user_name, $db_password);


print "Content-type: text/html\n";
print "Cache-Control: no-store, no-cache\n";
print "Expires: Thu, 01 Jun 2006 18:00:00 GMT\n";

sub  send_to_base        #Посылает в базу первый, если второй не равен "nr"  возвращает двумерный массив из базы. Добавляет две записи в массив журнала  - Запрос и ответ

     {
       my @return_array=send_to_base_temp($_[0]);
       my $error_message=$dbh->errstr;
       return @return_array;
     }

sub  send_to_base_temp        #Посылает в базу первый, если второй не равен "nr"  возвращает двумерный массив из базы. Добавляет две записи в массив журнала  - Запрос и ответ

     {
          my @temp;
          my $qwery=$_[0];
          my $no_return=$_[1];
          my $sth = $dbh->prepare($qwery);
          my $rv=$sth->execute();

          if ($no_return ne "nr")
            {
              my $count_row=0;
              while ( (my @qwery_row=$sth->fetchrow_array())and ($count_row<100000))
                {
                   my $count_col=0;
                   while(($count_col<=$#qwery_row) and ($count_col<100))
                     {
                        $temp[$count_row][$count_col]=$qwery_row[$count_col];
                        $count_col++;
                     }
                   $count_row++
                }
               return @temp;
            }
     }





send_to_base('set names cp1251;', 'nr');
my @return_array=send_to_base('show tables;');
my $print_string;
for (my$i=0;$i<=$#return_array;$i++)
   {
   $print_string.="$return_array[$i][0]<br>";
   }


#------------------------------------------------   Запись в файл
open (FILEZ2, ">>$filename");
for (my$i=0;$i<=$#return_array;$i++)
   {
print FILEZ2 $return_array[$i][0],"\n";
   }
close (FILEZ2);
#-----------------------------------------------   Конец Запись в файл


print <<END_OF_BEGIN;

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script language="JavaScript" src="/frames.js"></script>
<title></title>
<meta http-equiv="refresh" content="2; url=/cgi-bin/logout.cgi; target=_top" >



</head>
<body>
$print_string
</body>
</html>

END_OF_BEGIN
Если надо в таблицу - скажите в какую или новую...
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хакер и закон! SladerNon Болталка 17 12.11.2009 09:42
Хакеры и кракеры или "Что такое хорошо и что такое плохо?" foreva Чужие Статьи 12 09.02.2008 12:26
Обнаружение Sql инъекций и Css атак k00p3r Чужие Статьи 0 12.06.2005 20:43
SQL Injection в Oracle k00p3r Чужие Статьи 0 12.06.2005 12:41
Ловушка для взломщика k00p3r Чужие Статьи 0 08.06.2005 16:48



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


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




ANTICHAT.XYZ