Insert в базу из массива на php с определенным номером?

Есть массив $tags[1] с рандомным количеством значений, либо вообще пустой.

Array
(
    [0] => xRb
    [1] => TzR
    [2] => bw
    [3] => otT
    [4] => hwi
    [5] => hnb
)

Как его вставить в таблицу одним запросом, чтобы каждое значение вставлялось в новую строку? И заранее известным $news_id для всех записей текущего массива. Что-то вроде такого, только заранее неизвестно сколько всего данных в массиве.

id(int)  news_id   tag

1         8        xRb
2         8        TzR
3         8        bw
...       ...
79        8        otT
80        8        hwi

Ответы (1 шт):

Автор решения: Kirzzz
for( $i=0;$i<count($tagsArray);$i++){
    $sql01 = "INSERT INTO `table_name` (`news_id`,`tag`) VALUES (:news_id,:tag)";
    $req01 = $dbh->prepare($sql01);
    $req01->bindValue(':tag', $tagsArray[$i], PDO::PARAM_STR);
    $req01->bindValue(':news_id', $news_id, PDO::PARAM_STR);
    $req01->execute();
}

$news_id - заранее известный, $tagsArray[$i] - определенный тег. Данная структура подойдет, если массив $tagsArray, вы получаете до вставки, если же он у вас также перется из БД, то следует разбить запрос на два и сначала получить массив тегов и после уже вставлять данные. (Предполагается, что поле id(int) в БД autoincrement и является первичным ключом)

→ Ссылка