Каков наилучший способ вставки многомерного массива в таблицу MySQL в PHP

0

Мой вопрос очень похож на этот вопрос. Однако, в отличие от этого вопроса, у моего массива нет значений поля. Мой массив выглядит так:

      Array
    (
        [0] => Array
            (
                [0] => Extraction and characterisation of gelatin from the skin of striped catfish (Pangasianodon hypophthalmus) and studies on its colour improvement
                [1] => EMAIL FREE FULL TEXT                          DOWNLOAD FULL TEXT
                [2] => Prabjeet Singh,            Soottawat Benjakul
                [3] => 1-9
                [4] => http://dx.doi.org/10.5897/AJB2013.13121
            )

        [1] => Array
            (
                [0] => Electrolyte ions and glutathione enzymes as stress markers in Argania spinosa subjected to drought stress and recovery
                [1] => EMAIL FREE FULL TEXT                          DOWNLOAD FULL TEXT
                [2] => Abdelghani Chakhchar,            Mouna Lamaoui,            Salama Aissam,            Abderrahim Ferradous,            Said Wahbi,            Abdelhamid EI Mousadik,            Saad Ibnsouda-Koraichi,            Abdelkarim Filali-Maltouf,            Cherkaoui El Modafar
                [3] => 10-21
                [4] => http://dx.doi.org/10.5897/AJB2016.15234
            )

        [2] => Array
            (
                [0] => Molecular detection of disease resistance genes to powdery mildew (Blumeria graminis f. sp. tritici) in wheat (Triticum aestivum) cultivars
                [1] => EMAIL FREE FULL TEXT                          DOWNLOAD FULL TEXT
                [2] => Vincent Mgoli Mwale,            Xiuli Tang,            Eric Chilembwe
                [3] => 22-31
                [4] => http://dx.doi.org/10.5897/AJB2016.15720
            )
)

Я пытаюсь получить данные этого массива в таблицу mysql. Используемый мной код php выглядит следующим образом:

foreach ($newref as $key=>$values){
    $title = $values[0];
    $authors = $values[2];
    $pages = $values[3];
    $doi = $values[4];
    $query = "INSERT INTO citations (id,title,authors,pages,doi) VALUES (:title,:authors,:pages,:doi)";
        $sql=$con->prepare($query);
        $sql->execute(array(
            ':title' => $title,
            ':authors' => $authors,
            ':pages' => $pages,
            ':doi' => $doi

        ));
}

Почему-то я не могу вставить данные в таблицу. Мое соединение Db в порядке и не сообщает о каких-либо ошибках. Что я могу делать неправильно? Каков наилучший/более простой способ вставки такого рода данных в таблицу mysql? Я нахожусь наедине с моим... Спасибо вам заранее

  • 0
    Вы всегда будете получать этот массив, например, description 0 , title 1 и т. д.
  • 0
    С чего вы взяли, что соединение не сообщает об ошибках? Ваш запрос пытается вставить четыре заданных значения в пять объявленных столбцов
Теги:
arrays

1 ответ

1
Лучший ответ

Если атрибут id в таблице является автоматическим приращением, он должен быть удален из запроса. Он автоматически принимает следующее добавочное значение и просто вставляет другие столбцы/поля.

Запрос должен выглядеть следующим образом:

$query = "INSERT INTO citations (title,authors,pages,doi) VALUES (:title,:authors,:pages,:doi)";

Кстати, вы пытаетесь в правильном направлении.

  • 0
    Спасибо @Lovepreet. Отлично работает
  • 1
    на самом деле ошибка ОП заключается в том, что столбцы и значения не совпадают, но да, идентификатор может быть вообще опущен
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню