За последние 24 часа нас посетили 31526 программистов и 1770 роботов. Сейчас ищут 877 программистов ...

Добавление большого количества инфы в БД

Тема в разделе "MySQL", создана пользователем -Vladimir-, 20 сен 2009.

  1. -Vladimir-

    -Vladimir- Активный пользователь

    С нами с:
    20 сен 2009
    Сообщения:
    139
    Симпатии:
    0
    На сайте находится много информации файл1.php, файл2.php, файл3.php и т.д.
    Внутри каждого из этих файлов есть include 'add.php';
    При обращении к файл1.php, файл2.php, файл3.php и т.д. информация из каждого файла автоматически добавляется в базу (работает add.php). Но много так не добавишь: с помощью качалки - не получится - хостинг запрещает много обращений, а если использовать что-то типа

    Код (Text):
    1. <?php
    2. include 'файл1.php';
    3. include 'файл2.php';
    4. include 'файл3.php';
    5. и т.д. до 200
    6. ?>
    то данные добавляются когда как - когда почти 100%, а когда и меньше 50 (хотя нигде ошибок нет).

    Каким образом можно ещё вбить много инфы в базу?
     
  2. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    [sql]insert into `table` (`field1`, `field2`)

    values ('value1', 'value2'),

    values ('value3', 'value4'),

    -- [...]

    values ('value1001', 'value1002')[/sql]
    Один запрос.
     
  3. -Vladimir-

    -Vladimir- Активный пользователь

    С нами с:
    20 сен 2009
    Сообщения:
    139
    Симпатии:
    0
    Не совсем понял, как надо сделать.

    Из моего файла add.php:

    Код (Text):
    1. <?php
    2. //База данных (доступ)
    3. require_once "class.db.php";
    4.  
    5. //Добавление информации в базу данных
    6. $add = "INSERT INTO `info` (title,text,name,email,ip,date,vote,p1,p2,p3,p4) VALUES
    7. (
    8. '$title',
    9. '$content',
    10. '$name',
    11. '$email',
    12. '".$_SERVER['REMOTE_ADDR']."',
    13. '$date',
    14. '0',
    15. '1',
    16. '1',
    17. '0',
    18. '0'
    19. )";
    20. mysql_query ($add);
    21. $result = mysql_query("SELECT * FROM info ORDER BY id DESC");
    22. $id = mysql_fetch_array ($result);
    23. $id = $id['id'];
    24.  
    25. //Сообщение после добавления
    26. echo "<a href='material.php?id=$id'><b>$title</b></a>";
    27. }
    28. ?>
     
  4. -Vladimir-

    -Vladimir- Активный пользователь

    С нами с:
    20 сен 2009
    Сообщения:
    139
    Симпатии:
    0
    Как нужно сделать, чтобы он несколько добавлял сразу?
     
  5. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Типа если я в час дня не ответил, то в четыре дня вот точно отвечу после твоего "апа"?

    add.php так выглядеть должен
    PHP:
    1. <?
    2. $add[] = "VALUES
    3. (
    4. '$title',
    5. '$content',
    6. '$name',
    7. '$email',
    8. '".$_SERVER['REMOTE_ADDR']."',
    9. '$date',
    10. '0',
    11. '1',
    12. '1',
    13. '0',
    14. '0'
    15. )";
    16.  
    17. echo "<a href='material.php?id=$id'><b>$title</b></a>";
    А после всех инклудов(!) дописать

    PHP:
    1. <?
    2. $query = 'INSERT INTO `info` (title,text,name,email,ip,date,vote,p1,p2,p3,p4) ';
    3. $query .= join(', ', $add);
    4.  
    5. mysql_query ($query);
     
  6. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    lexa, только $id у нас нету в таком случае. наверное лучше всего после этого еще селект сделать
     
  7. -Vladimir-

    -Vladimir- Активный пользователь

    С нами с:
    20 сен 2009
    Сообщения:
    139
    Симпатии:
    0
    Инклуд для файл1.php, файл2.php, файл3.php...
    PHP:
    1. $add[] = "VALUES
    2. (
    3. '$title',
    4. '$content',
    5. '$name',
    6. '$email',
    7. '".$_SERVER['REMOTE_ADDR']."',
    8. '$date',
    9. '0',
    10. '1',
    11. '1',
    12. '0',
    13. '0'
    14. )";
    Файл, при обращении к которому должны происходить добавления в базу:
    PHP:
    1. <?php
    2. include 'файл1.php';
    3.  
    4. //База данных
    5. require_once "class.db.php";
    6.  
    7. $query = 'INSERT INTO `info` (title,text,name,email,ip,date,vote,p1,p2,p3,p4) ';
    8. $query .= join(', ', $add);
    9. //$query .= $add;
    10. mysql_query ($query);
    11.  
    12. ?>
    Работает только при одном инклуде (файл1.php). Если инклудов несколько - не пашет.
     
  8. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Смотр свои инклуды. Там что-то перебивает паеременную $add или типа того. Проверь переменные, которые вставляются в БД. Такой метод не может не работать, ибо прост как три копейки.
     
  9. -Vladimir-

    -Vladimir- Активный пользователь

    С нами с:
    20 сен 2009
    Сообщения:
    139
    Симпатии:
    0
    Всё, разобрался. Просто VALUES надо было перенести из $add в $query. По 100 инклудов работает.

    Если можете, помогите ещё сделать для генерации
    Код (Text):
    1. include 'файл1.php';
    2. include 'файл2.php';
    3. include 'файл3.php';
    4. ...
    что-то типа номер от ... до ...
     
  10. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    Обычный цикл. Самые основы.
    PHP:
    1. <?php
    2. for ($i = 0; $i < 1000; $i++) {
    3.     include "file$i.php";
    4. }
     
  11. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Да! Пардонь, моя ошибка. values один скобок много:

    [sql]insert into `table` (поля...) values
    (вставка 1...),
    (вставка 2...),
    -- ...
    (вставка N...)[/sql]