2013-04-19 2 views
0

возможно ли вставить значение флажка в несколько значений для вставки в базу данных?PHP/MySQL Имплицируйте несколько строк?

В ток у меня есть это:

$tags = implode(', ', $_POST['checkboxname']); 

Это дает мне значение «testtag1, testtag2»

Как бы разделить это так, что бы в базу данных, как:

Blog ID ¦ Tag 
------------------ 
1  ¦ testtag1 

1  ¦ testtag2 

Не знаете, как сделать функцию взрывать разделить их, как это:

$query2 = mysqli_query($myConnection, "INSERT INTO blogtags (blogid, tag) VALUES('$blogid','$tags')") or die (mysqli_error($myConnection)); 

просто вставляет два значения вместе в одну строку.

Любая помощь будет замечательной! Благодаря

+0

Почему вы обрушится? Просто повторите через '$ _POST ['checkboxname']' и сделайте вставку в каждом цикле. – pmayer

+2

Во-первых, у вас есть огромное отверстие для инъекций SQL. Во-вторых, подумайте о [синтаксисе MySQL] (http://dev.mysql.com/doc/refman/5.5/en/insert.html) для вставки нескольких строк в один запрос - вот что вам понадобится для отображения вашей строки как. В-третьих, и самое главное, потому что он решает оба вышеизложенных и более: вы должны подготовить инструкцию для вставки одной строки и вызывать ее несколько раз. Это именно то, к чему предназначены [подготовленные заявления] (http://php.net/mysqli.quickstart.prepared-statements). – DaveRandom

ответ

2

Попробуйте этот пример:

$tags = $_POST['checkboxname'] ; //Take the array of tags. 
$id = 1 ;      //Set needed id. 

$values = array() ; 

foreach($tags as $tag){ 
    $tag = $myConnection->real_escape_string($tag); 
    $values[] = " ('{$id}', '{$tag}') " ; 
} 

$values = implode(" , ", $values) ; 
$query = "INSERT INTO blogtags (blogid, tag) VALUES {$values} ; " ; 
+0

Сохранение значений, разделенных запятыми, в базе данных часто является плохой идеей. Лучшим вариантом является сохранение другой записи для каждого тега. – Jocelyn

+0

@Jocelyn Если вы запустите этот код, вы увидите, что он делает разные записи для каждого тега. – vikingmaster

+0

Ах да, вы правы. Я видел «implode» и подразумевал, что вы взорвали теги. Использование multi-insert, как и вы, прекрасно. Я должен был внимательно прочитать код. – Jocelyn

Смежные вопросы