Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Установка скрипта
 
 автор: BAHO   (04.12.2004 в 21:27)   письмо автору
 
 

Не подскажите, как мне написать скрипт, где устанавливалась бы целая система. Я создал БД с записями, зарезервировал её и теперь снёс. Резерв положил в файл kschool_base.sql. Как мне написать скрипт, чтобы он устанавливал эту систему через файл kschool_base.sql (файл весит 171 кбайтов запросов, где не очень хочется всё енто разрезать в php файл. Подскажите, плз!

   
 
 автор: cheops   (04.12.2004 в 21:34)   письмо автору
 
   для: BAHO   (04.12.2004 в 21:27)
 

Много ли в этом файле команд, расположенных на разных строках? Если дамп базы данных имеет такую структуру, что каждая команда SQL расположена в одной строке, скрипт по переброски его в базу займёт две строки. И в каком виде он сохранён - там полноценные SQL команды или только структура? Если последнее нужен кусочек файла.

   
 
 автор: BAHO   (05.12.2004 в 08:20)   письмо автору
 
   для: cheops   (04.12.2004 в 21:34)
 

Ну к примеру:
CREATE TABLE 'ks_articles' (
  'id' int(11) NOT NULL auto_increment,
  'date' date default '0000-00-00',
  'title' varchar(80) default '',
  'resume' text,
  'article' text,
  PRIMARY KEY  ('id')
);

INSERT INTO 'ks_articles' VALUES ('', '2004-11-28', 'Телестудия', 'В школе дейтсвует...', 'В школе...');

И так к каждой таблице, при этом кол-во строк больше 1 (тут только самый безобидный кусок кода)

   
 
 автор: glsv (Дизайнер)   (05.12.2004 в 12:08)   письмо автору
 
   для: BAHO   (05.12.2004 в 08:20)
 

Вот здесь также обсуждалось.

http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=760

   
 
 автор: cheops   (05.12.2004 в 12:53)   письмо автору
 
   для: BAHO   (05.12.2004 в 08:20)
 

Можно вот как поступить - сработает если только в текстовых полях нет точек с запятой...
<?php 
    $dblocation 
"localhost"
    
$dbname "ваша база"
    
$dbuser "ваш логин"
    
$dbpasswd "ваш пароль"

$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd); 
if (!
$dbcnx)  
{
  exit( 
"<P>В настоящий момент сервер базы данных не доступен,
  поэтому корректное отображение страницы невозможно.</P>" 
); 
}

if (! @
mysql_select_db($dbname,$dbcnx) )

  exit( 
"<P>В настоящий момент база данных не доступна,
  поэтому корректное отображение страницы невозможно.</P>" 
); 


// имя файла с дампом базы данных
$filename "kschool_base.sql";
// открываем его и читаем в буфер
$fp fopen($filename);
$bufer fread($fp,filesize($filename));
fclose($fp);
// Разбиваем содержимое файла по точке с запятой
$quer explode(";"$bufer);
foreach(
$quer as $query)
{
  if(!
mysql_query($query)) exit(mysql_error());
}
?>


PS Если не заладится - пишите, может чего с регулярными выражениями придумаем...

   
 
 автор: BAHO   (05.12.2004 в 15:39)   письмо автору
 
   для: cheops   (05.12.2004 в 12:53)
 

Появляется вот такая дрянь:
Warning: fopen() expects at least 2 parameters, 1 given in z:\home\kschool\www\install.php on line 23

Warning: fread(): supplied argument is not a valid stream resource in z:\home\kschool\www\install.php on line 24

Warning: fclose(): supplied argument is not a valid stream resource in z:\home\kschool\www\install.php on line 25
Query was empty

   
 
 автор: cheops   (05.12.2004 в 16:07)   письмо автору
 
   для: BAHO   (05.12.2004 в 15:39)
 

Хм... да, это я поторопился... следует использовать следующий скрипт
<?php 
    $dblocation 
"localhost"
    
$dbname "ваша база"
    
$dbuser "ваш логин"
    
$dbpasswd "ваш пароль"

$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd); 
if (!
$dbcnx)   

  exit( 
"<P>В настоящий момент сервер базы данных не доступен, 
  поэтому корректное отображение страницы невозможно.</P>" 
); 


if (! @
mysql_select_db($dbname,$dbcnx) ) 

  exit( 
"<P>В настоящий момент база данных не доступна, 
  поэтому корректное отображение страницы невозможно.</P>" 
); 


// имя файла с дампом базы данных 
$filename "kschool_base.sql"
// открываем его и читаем в буфер 
$fp fopen($filename"r"); 
$bufer fread($fp,filesize($filename)); 
fclose($fp); 
// Разбиваем содержимое файла по точке с запятой 
$quer explode(";"$bufer); 
foreach(
$quer as $query

  if(!
mysql_query($query)) exit(mysql_error()); 

?>

   
 
 автор: BAHO   (05.12.2004 в 16:44)   письмо автору
 
   для: cheops   (05.12.2004 в 16:07)
 

а если всё же есть кавычки и их никак не замениить?

   
 
 автор: cheops   (05.12.2004 в 17:01)   письмо автору
 
   для: BAHO   (05.12.2004 в 16:44)
 

Хм... поправьте меня если ошибаюсь: Все SQL-запросы в дамп-файле заканчиваются подстракой вида ");" с последующим переводом строки. Если это так, то должен сработать следующий скрипт:
<?php 
    $dblocation 
"localhost"
    
$dbname "ваша база"
    
$dbuser "ваш логин"
    
$dbpasswd "ваш пароль"

$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd); 
if (!
$dbcnx)    

  exit( 
"<P>В настоящий момент сервер базы данных не доступен, 
  поэтому корректное отображение страницы невозможно.</P>" 
); 


if (! @
mysql_select_db($dbname,$dbcnx) ) 

  exit( 
"<P>В настоящий момент база данных не доступна, 
  поэтому корректное отображение страницы невозможно.</P>" 
); 


// имя файла с дампом базы данных 
$filename "kschool_base.sql"
// открываем его и читаем в буфер 
$fp fopen($filename"r"); 
$bufer fread($fp,filesize($filename)); 
fclose($fp); 
// Разбиваем содержимое файла по точке с запятой 
$quer preg_split("|\);\r\n|"$bufer);
// Выполняем SQL-запросы
foreach($quer as $query

  if(!
mysql_query($query.")")) exit(mysql_error()); 

?>


PS В Windows перевод строки осуществляется двумя символами: возврат каретки и перевод строки - \r\n, в UNIX - просто переводом строки \n. Может быть разница в зависимости от того, где сформирован дамп-файл.

   
 
 автор: Денис   (13.09.2005 в 15:19)   письмо автору
 
   для: cheops   (05.12.2004 в 17:01)
 

Точно такой же вопрос. Решил воспользоваться вашим скриптом и возникла проблема, ответ даже не придумаю.


if($REQUEST_METHOD=="POST")
{
    $query = $_POST['query'];
    $plural_query = $_POST['plural_query'];
      /*if(tep_db_query(stripslashes($query)))
      {
        echo "Your SQL-query has been executed successfully";
      }*/
    //downloads($plural_query);
    
    //$filename = "kschool_base.sql";
    
    $fp = fopen($plural_query, "rb");
    $bufer = fread($fp,filesize($plural_query));
    fclose($fp);
    
    $quer = preg_split("|\);\r\n|", $bufer);
    
    foreach($quer as $query)
    {
          if(!mysql_query($query.")")) exit(mysql_error());
    }
}


Warning: fopen(db_loaded-20050401212648.sql): failed to open stream: No such file or directory in /var/www/html/test_p/backup_temp.php on line 15

Warning: filesize(): Stat failed for db_loaded-20050401212648.sql (errno=2 - No such file or directory) in /var/www/html/test_p/backup_temp.php on line 16

Warning: fread(): supplied argument is not a valid stream resource in /var/www/html/test_p/backup_temp.php on line 16

Warning: fclose(): supplied argument is not a valid stream resource in /var/www/html/test_p/backup_temp.php on line 17
You have an error in your SQL syntax near ')' at line 1

Строки 14 и 15:

$bufer = fread($fp,filesize($filename));
fclose($fp);

   
 
 автор: Денис   (13.09.2005 в 15:56)   письмо автору
 
   для: Денис   (13.09.2005 в 15:19)
 

спасибо, ответ нашел сам

   
 
 автор: Денис   (13.09.2005 в 16:53)   письмо автору
 
   для: Денис   (13.09.2005 в 15:19)
 

Извините за крайнюю настойчивость, но мне очень нужна ваша помощь.
Я пытаюсь загрузить файл с рашрирением .sql, считать его и выполнить записанные в нем команды, но дальше чем fopen не могу уйти - файл не находит. Не знаю, в чем причина, уже кажется, все перепробовал. Вот скрипт функции:

function downloads ($plural_query)
    {
        $extension = substr($plural_query, -3);
        if ( ($extension == 'zip') || ($extension == '.gz') || ($extension == 'sql') ) 
        {
            if ($fp = fopen($plural_query, 'rb')) 
              {
                $buffer = fread($fp, filesize($plural_query));
                fclose($fp);
            }
            else 
            {
                  echo "Error: Not open file";
            } 
        }
        else 
        {
          echo "Error: Download link not acceptable";
        } 
    }

Повторяю,хотя бы просто найти и открыть файл - и это не выполняется.
Возможно, вы знаете, как это делает phpMyAdmin?

   
 
 автор: cheops   (13.09.2005 в 18:46)   письмо автору
 
   для: Денис   (13.09.2005 в 16:53)
 

Хм... новые вопросы, лучше обсуждать в новой теме.

http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=7380

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования