Forum Webscript.Ru

Программирование => PHP => Тема начата: alex007 от 05 Августа 2003, 00:14:06

Название: Востановление MySql
Отправлено: alex007 от 05 Августа 2003, 00:14:06
Привет,

Вот есть часть скрипт:


...
if (!$_FILES[\'backup\'][\'tmp_name\'])
{
echo \'Вы забыли указать файл.\';
}
else
{
set_time_limit(180);
$fp = @fopen($_FILES[\'backup\'][\'tmp_name\'], \'r\');
$q= explode(";#%%\\n",$fp);
for ($i=0;$i < count($q)-1;$i++)
{
mysql_db_query($dbname,$q[$i],$conn) or die(mysql_error());
}
echo "Поздравляем датабаза востановлена!";
}
...
 

ошибок не выдает и почемуто не пахает и говорит что датабаза востановлена, хотя на самом деле нет.

Жду Ответов.

С Уважением,
Алекс.
Название: Востановление MySql
Отправлено: Макс от 05 Августа 2003, 01:25:27
alex007
Цитировать
$fp = @fopen($_FILES[\'backup\'][\'tmp_name\'], \'r\');
$q= explode(";#%%\\n",$fp);
замени на
$fp = file_get_contents($_FILES[\'backup\'][\'tmp_name\']);
(php 4.3.0 и выше)

PS
точно не помню, но по-моему временные файлы нельзя сразу считывать и сначало нужно скопировать в свою папку. Так что, если пример выше не сработает - сделай сначало копирование ([p]move_uploaded_file[/p])

PPS
лучше юзай mysql_query. Насколько я знаю mysql_db_query при каждом запросе соединяется с указанной бд
Название: Востановление MySql
Отправлено: alex007 от 05 Августа 2003, 20:23:59
Макс
Спасибо.
Название: Востановление MySql
Отправлено: Tronyx от 05 Августа 2003, 21:07:45
Цитировать
alex007:
$fp = @fopen($_FILES[\'backup\'][\'tmp_name\'], \'r\');
$q= explode(";#%%\\n",$fp);

Во первых - $fp в данном случае не текст файла, а указатель на файл. Сначала нужно прочитать файл $file_content=fread($fp, file_size($_FILES[\'backup\'][\'tmp_name\']));

Цитировать
alex007:
for ($i=0;$i < count($q)-1;$i++)

Во вторых - отнимать единицу здесь не нужно!
Название: Востановление MySql
Отправлено: alex007 от 06 Августа 2003, 00:38:07
Tronyx
Спасибо.

Вот немного переделал:

$uploaddir = \'/path/to/temp/\';
...
if (move_uploaded_file($_FILES[\'backup\'][\'tmp_name\'], $uploaddir . $_FILES[\'backup\'][\'name\'])) {
set_time_limit(180);

$filename = $uploaddir.$_FILES[\'backup\'][\'name\'];
function file_get_contents($filename) {
   $fd = fopen("$filename", "rb");
   $content = fread($fd, filesize($filename));
  fclose($fd);
   return $content;
}
$q= explode(";#%%\\n",$content);
for ($i=0;$i < count($q);$i++)
{
mysql_query($dbname,$q[$i], $db_conn) or die(mysql_error());
}
echo "Поздравляем датабаза востановлена!";
 
} else {

   echo \'Вы забыли указать файл.\';
 
}
...



Ругается: Warning: Wrong parameter count for mysql_query()
в строке
Цитировать
mysql_query($dbname,$q[$i], $conn) or die(mysql_error());


добавляю ту еденицу:
for ($i=0;$i < count($q)-1;$i++)

работает без ошибок, но работу свою не делает.

Жду Ответов.

С Уважением,
Алекс.
Название: Востановление MySql
Отправлено: Макс от 06 Августа 2003, 01:19:51
alex007
пишешь полный бред (грубо, но правда).
Читай хотя бы описания функций в мане перед тем как используешь их:

if (!function_exists(\'file_get_contents\')) {
   function file_get_contents($file, $use_include_path = false) {
      $fp = fopen($file, "rb", $use_include_path);
      $content = fread($fp, filesize($file));
      fclose($fp);
      return $content;
   }
}

if (move_uploaded_file($_FILES[\'backup\'][\'tmp_name\'],
$uploaddir . $_FILES[\'backup\'][\'name\'])) {
       set_time_limit(180);
       $filename = $uploaddir.$_FILES[\'backup\'][\'name\'];
    $content = file_get_contents($filename);
    $q= explode(";#%%\\n",$content);
    for ($i=0;$i < count($q);$i++)  {
       mysql_query($q[$i], $db_conn) or die(mysql_error());
    }
    echo "Поздравляем датабаза востановлена!";
} else {
    echo \'Вы забыли указать файл.\';
 
}

примерно так. Конечно же не проверял
Название: Востановление MySql
Отправлено: Макс от 06 Августа 2003, 01:25:21
не забудь к БД присоединиться после коннекта ([p]mysql_select_db[/p])
Название: Востановление MySql
Отправлено: alex007 от 06 Августа 2003, 19:57:12
Макс
Спасибо.

Цитировать
не забудь к БД присоединиться после коннекта (mysql_select_dbphp.net)

У меня это прописано функцией выше.
Название: Востановление MySql
Отправлено: alex007 от 06 Августа 2003, 20:37:25
Макс
У меня вылазиет ошибка: Warning: Wrong parameter count for mysql_query()
Название: Востановление MySql
Отправлено: Tronyx от 06 Августа 2003, 21:23:37
Цитировать
alex007:
Макс
У меня вылазиет ошибка: Warning: Wrong parameter count for mysql_query()

Цитировать
Макс:
пишешь полный бред (грубо, но правда).
Читай хотя бы описания функций в мане перед тем как используешь их:


Тема закрыта, так как продолжать её безсмысленно - автор плохо читает текст с монитора.