За последние 24 часа нас посетили 22390 программистов и 1031 робот. Сейчас ищут 619 программистов ...

Не пойму почему полученный массив не записывает в базу

Тема в разделе "PHP и базы данных", создана пользователем kolbok, 7 мар 2019.

  1. kolbok

    kolbok Новичок

    С нами с:
    10 июл 2018
    Сообщения:
    13
    Симпатии:
    0
    PHP:
    1. <form method="post" action="/main/importTxt" enctype="multipart/form-data">
    2.     <div class="form-group mt-3">
    3.         <label for="exampleFormControlFile1">Файл .TXT :</label>
    4.         <input name="file" type="file" class="form-control-file" id="exampleFormControlFile1">
    5.     </div>
    6.     <button type="submit" class="btn btn-success mb-3">Загрузить данные в базу </button>
    7. </form>
    8.  
    9.  
    10. <?php
    11.  
    12.         if (!file_exists($_FILES['file']['tmp_name']) || !is_uploaded_file(($_FILES['file']['tmp_name']))) {
    13.             echo "No upload";
    14.         } else {
    15.  
    16.             $file = fopen($_FILES['file']['tmp_name'], "r");
    17.  
    18.             $i = 0;
    19.             $result = [];
    20.  
    21.             while (!feof($file)) {
    22.                 $buffer = fgets($file);
    23.                 if (($buffer != "\n") && ($buffer != '')) {
    24.                     $result[$i][explode(':', $buffer)[0]] = explode(':', $buffer)[1];
    25.                 } else $i++;
    26.             }
    27.             fclose($file);
    28.  
    29.             echo "<pre>";
    30.             var_dump($result);
    31.             echo "</pre>";
    32.  
    33.             $c = new Model();
    34.  
    35.             if ($c->connect()) {
    36.  
    37.  
    38.                     $sql = "INSERT INTO films (title, release, format, actors)
    39.        VALUES ( :title,  :release,  :format, :actors)";
    40.                     $stmt = $c->connect()->prepare($sql);
    41.                 foreach ($result as $k => $v ) {
    42.                     $stmt->bindParam(':title', $v['Title'], PDO::PARAM_STR);
    43.                     $stmt->bindParam(':release', $v['Release Year'], PDO::PARAM_STR);
    44.                     $stmt->bindParam(':format', $v['Format'], PDO::PARAM_STR);
    45.                     $stmt->bindParam(':actors', $v['Stars'], PDO::PARAM_STR);
    46.                     $stmt->execute();
    47.                 }
    48.             }
    49.         }
    50.  
    51. ?>
    Открываю тхт файл в форме, получаю путь, достаю из него массив и пытаюсь записать, но не выходит... шото я туплю

    Массив будет в таком виде:

    array(25) {
    [0]=>
    array(4) {
    ["Title"]=>
    string(17) " Blazing Saddles
    "
    ["Release Year"]=>
    string(6) " 1974
    "
    ["Format"]=>
    string(5) " VHS
    "
    ["Stars"]=>
    string(84) " Mel Brooks, Clevon Little, Harvey Korman, Gene Wilder, Slim Pickens, Madeline Kahn
    "
    }
    [1]=>
    array(4) {
    ["Title"]=>
    string(12) " Casablanca
    "
    ["Release Year"]=>
    string(6) " 1942
    "
    ["Format"]=>
    string(5) " DVD
    "
    ["Stars"]=>
    string(60) " Humphrey Bogart, Ingrid Bergman, Claude Rains, Peter Lorre
    "
    }
     
  2. Babka_Gadalka

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

    С нами с:
    16 фев 2019
    Сообщения:
    162
    Симпатии:
    23
    Адрес:
    Москва, Пушкина, Избушкина, 2й этаж душечка.
    Проверь
    --- Добавлено ---
    По логике:
    while и foreach можно объединить
     
  3. kolbok

    kolbok Новичок

    С нами с:
    10 июл 2018
    Сообщения:
    13
    Симпатии:
    0
    Ну база вроде подключена, ошибок тоже нет, и не работает
     
  4. Babka_Gadalka

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

    С нами с:
    16 фев 2019
    Сообщения:
    162
    Симпатии:
    23
    Адрес:
    Москва, Пушкина, Избушкина, 2й этаж душечка.
    есть истина либо ложь, третьего не дано. Проверил ?
    С самим insert гуд все.
    Не вижу подключения класса Model