За последние 24 часа нас посетили 29532 программиста и 1815 роботов. Сейчас ищут 739 программистов ...

Идиотский вопрос на уровне 1 класса

Тема в разделе "PHP для новичков", создана пользователем kirwebgroup, 10 дек 2008.

  1. kirwebgroup

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

    С нами с:
    21 ноя 2008
    Сообщения:
    48
    Симпатии:
    0
    Итак.

    PHP:
    1. $dir = "./memberfiles/";
    2. $files = glob("$dir*.dat");
    3. $files = str_replace(".dat","",$files);
    4. $files = str_replace($dir,"",$files);
    5.  
    6. foreach ($files as $frow=>$keyrow){
    7. $db->query("INSERT INTO " . USERPREFIX . "_redirect_member (member) VALUES ('$keyrow')");
    8. }
    Внимание вопрос))) Почему данные из массива $files добавляются дважды?
     
  2. kirwebgroup

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

    С нами с:
    21 ноя 2008
    Сообщения:
    48
    Симпатии:
    0
    да кстати
    PHP:
    1. print_r($keyrow);
    выводит на екран все как надо.
     
  3. free-bits

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

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    Не советую делать бд запросы в циклах
     
  4. kirwebgroup

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

    С нами с:
    21 ноя 2008
    Сообщения:
    48
    Симпатии:
    0
    Мда.... а каким же макаром добавить в БД массив.
    При вынесении запроса из БД добавляет только $files[0], самое смешное в том, что тоже 2 раза подряд.
    Подскажи плиз.Всю ночь писал код, под утро такой головной напряг с этим массивом, уже мазги закипают.
     
  5. +Sten+

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

    С нами с:
    27 авг 2007
    Сообщения:
    978
    Симпатии:
    0
    implode
     
  6. free-bits

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

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    PHP:
    1.  
    2. <?
    3. $query = "INSERT INTO $table VALUES (".implode("), (", $file).")";
    4.  
     
  7. kirwebgroup

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

    С нами с:
    21 ноя 2008
    Сообщения:
    48
    Симпатии:
    0
    да что-то около того, но дело вот в том что каждый элемент массива вставляется как разные колонки таблицы, а в задумке это строки... одна и та же строка, подряд

    Получается INSERT INTO tbI (column) VALUES (1,2,3)
    а хотелось бы INSERT INTO tbI (column) VALUES (1);INSERT INTO tbI (column) VALUES (2);INSERT INTO tbI (column) VALUES (3).
    Макаром $files[0] - не прокатит, так как массив формируется по списку файлов в директории.
    Хелп ми... емае уже нече не соображаю... все спать...двае суток у кампа.... Если кто подскажет решение по гроб жизни обязан (я серьезна), ну или с меня пиво... а да.. мы в разных гарадах(( жаль..тады ненаю как благодарить, придумайте))
     
  8. free-bits

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

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    Если массив
    Код (Text):
    1.  
    2. $file = array(
    3.      [0] => 1,
    4.      [1] => 2,
    5.      [2] => 3
    6. );
    то после
    PHP:
    1.  
    2. <?
    3. $query = "INSERT INTO tbl VALUES (".implode("), (", $file).")";
    4.  
    в переменой $query по идее должно получиться следующее значение
    [sql]
    INSERT INTO tbl VALUES (1), (2), (3)
    [/sql]
    Т.е. добавление в таблицу нескольких строк в одном запросе
     
  9. kirwebgroup

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

    С нами с:
    21 ноя 2008
    Сообщения:
    48
    Симпатии:
    0
    В том то и дело, что не добавляется,пишет duplicate column at row 1
     
  10. kirwebgroup

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

    С нами с:
    21 ноя 2008
    Сообщения:
    48
    Симпатии:
    0
    Спрашивал бы..еслиб все работало...вот трабла эта вылезла,. и никак(
     
  11. Dagdamor

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

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    kirwebgroup
    Не приходило в голову, что этот фрагмент кода у тебя может отрабатывать дважды в скрипте?
     
  12. kirwebgroup

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

    С нами с:
    21 ноя 2008
    Сообщения:
    48
    Симпатии:
    0
    Хммм.... нет не приходило...
    только вот вопрос почему? Из-за глоуб? запрос то на добавление в базу один... похожих и в помине нет... усли выводить запрос через принт, отображение один раз. Буду признателен, если ткнешь носом как проверить где именно срабатывает два раза... Весь код скрипта приведен в первом посте.
     
  13. kirwebgroup

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

    С нами с:
    21 ноя 2008
    Сообщения:
    48
    Симпатии:
    0
    Кстате твой фреймворк это что-то (в хорошом смысле %) ), не против если я попользую некоторые отрывки кода?
     
  14. Dagdamor

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

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    kirwebgroup
    Наверное, если бы я был против, не стал бы его повсюду в подпись пихать :lol:
    Используй на здоровье, буду рад если пригодится.
    По сабжу - может у тебя где-нибудь скрытый подзапрос, например ajax... сделай временную табличку с одним полем, добавь в код строку:
    PHP:
    1. <?php mysql_query("INSERT INTO temptable VALUES (0)");
    И запусти скрипт, если в таблице появится 2 записи - значит, что-то тут не так... ;)