mysql — вставка нескольких тегов в базу данных в переполнении стека

Я пытаюсь вставить несколько тегов в базу данных.
Я использую плагин TokenInput для сбора тегов пользователей.
Я получаю строку тегов, разделенных запятой, например:

if($_POST) {
$data = $_POST['tags'];
$tags = explode(",", $data);
$snap = 6;
echo $data;
}

Данные поступают из функции AJAX. При отображении $ data я получаю строку вроде этой:

Zara, AllSaints

Затем я продолжаю разделять их с помощью explode () и перебирать созданный массив.

if($_POST) {
$data = $_POST['tags'];
$tags = explode(",", $data);
$snap = 6;

for($x = 0; $x < count($tags); $x++) {
mysql_query("INSERT INTO tags (tagid, tagname, snapid) VALUES ('', '$tags[x]', '$snap')");
}
}

Этот код вставит пустые значения в тэг. Есть ли у вас какие-либо предложения, что я должен изменить, чтобы сделать эту работу? Должен ли я переписать код цикла?
Спасибо за любую помощь.

1

Решение

Удалось это сделать. Это было довольно легко, надо было подумать об этом перед публикацией.
Итак, мой код сейчас:

if($_POST) {
$data = $_POST['tags'];
$tags = explode(",", $data);
$snap = 6;

for($x = 0; $x < count($tags); $x++) {
mysql_query("INSERT INTO tags (tagid, tagname, snapid) VALUES ('', '" . $tags[$x] . "', '$snap')");
}
}

При этом я могу вставить столько тегов, сколько есть внутри массива.
Надеюсь, кто-нибудь найдет это полезным однажды.
Спасибо

2

Другие решения

Вы можете использовать более оптимальную пакетную вставку, а также исправить генерацию строки значений sql:

<?php

if($_POST) {
$data = $_POST['tags'];
$tags = explode(",", $data);
$snap = 6;

$values = array_map(function($item) use($snap) {
return "('', '".$item."', '".$snap."')";
}, $tags);

$sql = "INSERT INTO tags (tagid, tagname, snapid) VALUES ".
implode(",", $values);
mysql_query($sql);
}
0

По вопросам рекламы [email protected]