EXPORT данных(код создания таблицы) из PhpMyadmin, EXPORT данных(код создания таблицы) из PhpMyadmin |
Здравствуйте Гость [ Вход | Регистрация ] | Форум в сети 6725-й день
![]() |
Шановні користувачі! Запрошуємо вас до офіційного телеграм-канала 0day Community. Тут ви зможете поспілкуватися одне з одним та дізнатися про останні новини щодо роботи ресурса, поставити запитання до адміністрації, тощо. Перейти до телеграм-канала можна відсканувавши QR-код або натиснувши на посилання: @zeroday_ua |
EXPORT данных(код создания таблицы) из PhpMyadmin, EXPORT данных(код создания таблицы) из PhpMyadmin |
Lewui |
Пост
#1
|
Незарегистрированный ![]() |
Нужна помощь, нужно сделать вывод кода для создания таблицы из вкладки Экспорт(EXPORT) в PHPMYADMIN, что в таблице вкладка, вывести в текстратию.
Вывод кода для создания таблицы, вкладка Экспорт, текстария. (База данных - таблица - вкладка EXPORT - кнопка go - вывод кода в TEXTARIA) Оформление: Форма, текстария, комбобокс(для выбора таблицы) , кнопка вывода данных из EXPORT таблицы. Я начал делать только оформление, не знаю как сделать вывод из EXPORT в PHPMYADMIN. К примеру, EXPORT из таблицы Vasa: -- phpMyAdmin SQL Dump -- version 3.2.3 -- http://www.phpmyadmin.net -- -- Host: localhost -- Generation Time: Dec 22, 2015 at 10:39 AM -- Server version: 5.1.40 -- PHP Version: 5.3.1 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; -- -- Database: `AvtobysPark` -- -- -------------------------------------------------------- -- -- Table structure for table `Vasa` -- CREATE TABLE IF NOT EXISTS `Vasa` ( `q` int(11) DEFAULT NULL, `w` varchar(50) DEFAULT NULL, `eret` tinyint(4) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=cp1251; -- -- Dumping data for table `Vasa` -- Это нужно вывести в TEXTARIA Вот моё начало <form action=Export.php method=GET> <input type=hidden name=o value=<? print $_GET['o'];;?>> <select name='y1'> <option name=k value=1>Avtobys</option> <option name=k value=2>Marshryt</option> <option name=k value=3>Marshryt_punkt</option> <option name=k value=4>Nasel_pynkt</option> <option name=k value=5>Passazir</option> <option name=k value=6>Prodazha</option> <option name=k value=7>Raspisanie</option> <option name=k value=8>Vasa</option> </select> </form> <? mysql_connect("localhost","root") or die("no connect"); mysql_select_db("AvtobysPark"); print 'Export:<textarea name=zapr rows=20 cols =70 ></textarea><br><br>'; ?><input type=submit name=submit value=Go ><? ?> |
![]() ![]() |
elevenelven |
Пост
#2
|
Репутация: ![]() ![]() Активист ![]() Группа: Пользователи Сообщений: 218 С нами с: 2-June 07 ![]() |
Чувствуется рука мастера. Но нет...
http://php.net/manual/en/function.shell-exec.php `mysqldump -u root -p --no-data dbname > schema.sql` ----------------- А можно не делать велосипед и... https://github.com/ifsnop/mysqldump-php Сообщение отредактировал elevenelven - Dec 22 2015, 15:03 |
Vo1 |
Пост
#3
|
Благодарности: 749 Репутация: ![]() ![]() Старожил ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 2 396 С нами с: 10-November 06 ![]() |
Чувствуется рука мастера. Но нет... http://php.net/manual/en/function.shell-exec.php `mysqldump -u root -p --no-data dbname > schema.sql` ----------------- А можно не делать велосипед и... https://github.com/ifsnop/mysqldump-php чувствуется рука мастера, но нет SHOW CREATE TABLE <name>; |
elevenelven |
Пост
#4
|
Репутация: ![]() ![]() Активист ![]() Группа: Пользователи Сообщений: 218 С нами с: 2-June 07 ![]() |
В ТЗ есть Dumping data for table `Vasa`.
Поэтому ваш вариант не подойдет. Конечно, если нужна только структура таблицы, проще выполнить чистый sql. Сообщение отредактировал elevenelven - Dec 23 2015, 12:16 |
Vo1 |
Пост
#5
|
Благодарности: 749 Репутация: ![]() ![]() Старожил ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 2 396 С нами с: 10-November 06 ![]() |
В ТЗ есть Dumping data for table `Vasa`. Поэтому ваш вариант не подойдет. Конечно, если нужна только структура таблицы, проще выполнить чистый sql. echo "\n--\n-- Dumping data for table `$tableName`\n--\n"; Ну реально, использовать exec (да еще и с выводом в файл, да еще и не в /tmp) - самый глупый совет, который можно дать программисту. и тс, не забудь про mysql_real_escape_string($tableName) Сообщение отредактировал Vo1 - Dec 23 2015, 12:43 |
elevenelven |
Пост
#6
|
Репутация: ![]() ![]() Активист ![]() Группа: Пользователи Сообщений: 218 С нами с: 2-June 07 ![]() |
0. echo "\n--\n-- Dumping data for table `$tableName`\n--\n"; Это вывод строки. Что не равносильно экспорту данных из таблицы MySQL.
1. Вы путаете exec и backtick operator (ну или shell_exec() ). 2. Я не предлагаю папку для экспорта файла, а привел пример. 3. Предоставил данные реализованной библиотеки, которая решает поставленную задачу. А какое решение предлагаете вы? Помимо не совсем корректных замечаний в мой адрес, вы предложили только экспорт структуры таблицы, но не данных. ----------------------------- Обращаясь к ТС, предложу ему постить подобные вопросы на toster.ru Сообщение отредактировал elevenelven - Dec 23 2015, 13:53 |
Vo1 |
Пост
#7
|
Благодарности: 749 Репутация: ![]() ![]() Старожил ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 2 396 С нами с: 10-November 06 ![]() |
1. Вы путаете exec и backtick operator (ну или shell_exec() ). 2. Я не предлагаю папку для экспорта файла, а привел пример. 3. Предоставил данные реализованной библиотеки, которая решает поставленную задачу. А какое решение предлагаете вы (помимо не особо меткой критики)? ----------------------------- Обращаясь к ТС, предложу ему постить подобные вопросы на toster.ru Я не путаю. Использовать exec/shell_exec и прочий подобный мусор для выполнения того, что реализуется средствами языка - это неверно: - Во-первых, у www-юзера может быть закрыт доступ для на выполнение mysqldump (chmod ug=rwx,o=r) или mysqldump банально не будет в PATH. - Во вторых - не всегда знаешь куда можно писать - самое верное - писать в /tmp опять же (у меня на хостах всех апач может писать только в пару директорий - DOCUMENT_ROOT/var и DOCUMENT_ROOT/media). В третьих - в случае sql-инжекта, при использовании mysql_query можно поломать базу, в случае инжекта в shell_exec $dbName = "vasa && rm -rf ./" превращается в `mysqldump -u root -p --no-data vasa && rm -rf ./ > schema.sql` ![]() Я предложил использовать SQL query: SHOW CREATE TABLE vasa. Что с ним делать, я думаю он поймет, раз уже использовал в коде mysql_connect("localhost","root") or die("no connect"); mysql_select_db("AvtobysPark"); а, и да, exec/shell_exec возвращает результат вывода, поэтому дампить в файлу незачем - $result = shell_exec("mysqldump blabla"); Сообщение отредактировал Vo1 - Dec 23 2015, 14:08 |
elevenelven |
Пост
#8
|
Репутация: ![]() ![]() Активист ![]() Группа: Пользователи Сообщений: 218 С нами с: 2-June 07 ![]() |
Предположим не путаете. Я руководствовался тем, что утверждение использовать exec и Использовать exec/shell_exec несколько различаются. Не находите? Но давайте предположим что мы оба джентльмены и профессионалы.
- Во-первых, у www-юзера может быть закрыт доступ для на выполнение mysqldump (chmod ug=rwx,o=r) или mysqldump банально не будет в PATH. Это проблемы деплоя на прод. ----- - Во вторых - не всегда знаешь куда можно писать - самое верное - писать в /tmp опять же (у меня на хостах всех апач может писать только в пару директорий - DOCUMENT_ROOT/var и DOCUMENT_ROOT/media). Повторюсь, я не предлагал папку для записи. А если бы предлагал, то это была бы доступная для чтения\записи директория, для php-процесса. Более того, не у всех на хостах апач. И снова же, это проблема деплоя. ----- В третьих - в случае sql-инжекта, при использовании mysql_query можно поломать базу, в случае инжекта в shell_exec $dbName = "vasa && rm -rf ./" превращается в `mysqldump -u root -p --no-data vasa && rm -rf ./ > schema.sql` При фильтрации пользовательского ввода ( escapeshellarg() ), а также имплементации whitelist, инъекции исключены. Это проблема код-ревью, а не функции shell_exec(). ------ Я предложил использовать SQL query: SHOW CREATE TABLE vasa. Но к сожалению, не предложили как получить дамп данных. ------ а, и да, exec/shell_exec возвращает результат вывода, поэтому дампить в файлу незачем В файл пишем, потому что: - у пайпинга через backtick ограниченный буфер. - у процесса php ограничена память и нет смысла отъедать её текстовой информацией, которая неминуемо превысит лимит по памяти. - Дамп - это в итоге файл. Или вы думаете, кто-то читает текст дампов перед сном? ------ для выполнения того, что реализуется средствами языка Как средствами языка php получить дамп БД, можно изучить на примере исходников Syphex Dumper. Но это сотни строк кода. Дамп, конкатенация и работа со строками длинее 61440, пайпинг в файл. Используя mysqldump можно сократить код в разы, потому что это уже готово и это работает не на интерпретируемом языке, а на компилируемом. ------ В следующий раз, критикуя чужое решение, будьте готовы аргументировать свои высказывания. Потому что фразы типа Ну реально, использовать exec (да еще и с выводом в файл, да еще и не в /tmp) - самый глупый совет, который можно дать программисту. оставляют плохое впечатление. Вы ведь согласны, что дамп надо делать в файл? Что exec() и shell_exec() абсолютно разные функции? Сообщение отредактировал elevenelven - Dec 23 2015, 14:39 |
Vo1 |
Пост
#9
|
Благодарности: 749 Репутация: ![]() ![]() Старожил ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 2 396 С нами с: 10-November 06 ![]() |
Это проблемы деплоя на прод.
----- Это проблемы использования неверных инструментов для достижения цели Повторюсь, я не предлагал папку для записи. А если бы предлагал, то это была бы доступная для чтения\записи директория, для php-процесса. Более того, не у всех на хостах апач. И снова же, это проблема деплоя. ----- Это проблемы использования неверных инструментов для достижения цели. Апач, не апач, неважно, в любом случае не всегда вебсервер может писать повсюду. При фильтрации пользовательского ввода ( escapeshellarg() ), а также имплементации whitelist, инъекции исключены. Это проблема код-ревью, а не функции shell_exec(). ------ Я предложил использовать SQL query: SHOW CREATE TABLE vasa. Но к сожалению, не предложили как получить дамп данных. ------ SQL SHOW CREATE TABLE name возвращает CREATE TABLE. По заданию дампить данные человеку не нужно. С тем же успехом - вы тоже. Ведь не показано где и откуда его прочесть и как вывести. Я всего лишь показал наиболее корректный инструмент. От текущего кода он будет отличаться лишь mysql query/fetch функциями, тогда как ваш инструмент требует существования. К примеру, на моих проектах нет mysqldump как и mysql, т.к. база физически находится на другом сервере. - у процесса php ограничена память и нет смысла отъедать её текстовой информацией, которая неминуемо превысит лимит по памяти. Серьезно? CREATE TABLE-дамп неминуемо превысит лимит по памяти? четаржу. ------ для выполнения того, что реализуется средствами языка Как средствами языка php получить дамп БД, можно изучить на примере исходников Syphex Dumper. Но это сотни строк кода. Дамп, конкатенация и работа со строками длинее 61440, пайпинг в файл. Используя mysqldump можно сократить код в разы, потому что это уже готово и это работает не на интерпретируемом языке, а на компилируемом. Человеку по заданию нужно код создания таблицы, а не дамп БД. Использовать кувалду, чтоб убить муравья - неудобно. Сообщение отредактировал Vo1 - Dec 23 2015, 14:42 |
elevenelven |
Пост
#10
|
Репутация: ![]() ![]() Активист ![]() Группа: Пользователи Сообщений: 218 С нами с: 2-June 07 ![]() |
Я предположил, что все-таки надо и дамп. А?
-- -- Table structure for table `Vasa` -- -- -- Dumping data for table `Vasa` -- Или попытка внимательно прочесть ТЗ на 10 строк тоже вызывает у вас "четаржу" |
Vo1 |
Пост
#11
|
Благодарности: 749 Репутация: ![]() ![]() Старожил ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 2 396 С нами с: 10-November 06 ![]() |
Я предположил, что все-таки надо и дамп. А? -- -- Table structure for table `Vasa` -- -- -- Dumping data for table `Vasa` -- Или попытка внимательно прочесть ТЗ на 10 строк тоже вызывает у вас "четаржу" так сам же и советовал дальше `mysqldump -u root -p --no-data dbname > schema.sql` ![]() >> нужно сделать вывод кода для создания таблицы |
elevenelven |
Пост
#12
|
Репутация: ![]() ![]() Активист ![]() Группа: Пользователи Сообщений: 218 С нами с: 2-June 07 ![]() |
Ой, точно. То есть вы считаете, что это нормально, выложить nix-команду которая полный дамп сделает?!
Ладно, с вами сложно спорить. Потому что вы не признаете своих ошибок, аргументация у вас слабая, матчасть так-себе. А самое главное, вы не решаете задачу, а просто зашли покритиковать, не обладая достаточным уровнем знаний. ------------------- Я еще раз предлагаю автору продублировать вопрос на toster.ru И немного проиллюстрировать. |
Vo1 |
Пост
#13
|
Благодарности: 749 Репутация: ![]() ![]() Старожил ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 2 396 С нами с: 10-November 06 ![]() |
Ой, точно. То есть вы считаете, что это нормально, выложить nix-команду которая полный дамп сделает?! Ладно, с вами сложно спорить. Потому что вы не признаете своих ошибок, аргументация у вас слабая, матчасть так-себе. А самое главное, вы не решаете задачу, а просто зашли покритиковать, не обладая достаточным уровнем знаний. ------------------- Я еще раз предлагаю автору продублировать вопрос на toster.ru И немного проиллюстрировать. Вы советуете использовать то, что не нужно использовать в данном случае. Я предлагаю Вам поделиться своим огромным опытом и продублировать свое решение на http://govnokod.ru/php Сообщение отредактировал Vo1 - Dec 23 2015, 17:08 |
![]() ![]() |
![]() |
Упрощённая версия | Сейчас: 13th August 2024 - 1:37 |
Сайт не розміщує електронні версії творів, а займається лише колекціонуванням та каталогізацією посилань, що публікуються нашими користувачами. Якщо Ви є правовласником якоїсь частини опублікованого матеріалу та не бажаєте, щоб посилання на нього знаходилось в нашому каталозі, зв’яжіться з нами і ми видалимо його. Файли для обміну надані користувачами сайту і адміністрація не несе відповідальності за їх вміст. |