Вставить несколько значений флажка в несколько строк в одной таблице?
У меня есть несколько флажков с тем же именем ввода, как это
<input type="checkbox" name="pop[]" value="pop1">pop1<br>
<input type="checkbox" name="pop[]" value="pop2">pop2<br>
<input type="checkbox" name="pop[]" value="pop3">pop3<br>
<input type="checkbox" name="pop[]" value="pop4">pop4 <br>
<input type="checkbox" name="pop[]" value="pop5">pop5<br>
<input type="checkbox" name="pop[]" value="pop6">pop6 <br>
<input type="checkbox" name="pop[]" value="pop7">pop7<br>
<input type="checkbox" name="pop[]" value="pop8">pop8 <br>
Таблица базы данных содержит два столбца (ID
а также POPNAME
).
Мне нужно, чтобы каждый поп проверял, чтобы вставить в базу данных в отдельной строке, но с тем же идентификатором, так что это мой PHP:
$pop = implode(',', $_POST['pop']);
mysql_query("INSERT INTO pops (id, popname) VALUES (LAST_INSERT_ID(), '$pop')");
Но это не работает. Я пытался придерживаться этого ответа сделать взорвать затем использовать для каждого, но также не работает. Это код for each:
$pop = implode(',', $_POST['pop']);
$pops = explode(',', $pop);
foreach ($pops as $pop )
{
mysql_query("INSERT INTO pops (id, popname) VALUES (LAST_INSERT_ID(), '$pop')");
}
Я что-то пропустил!
2 ответа
Решение
Это решено.
Проблема в $pop
определяется дважды один как переменная другой в foreach
Так что после переименования первого вар все хорошо
$popimp = implode(',', $_POST['pop']);
$pops = explode(',', $pop);
foreach ($pops as $pop )
{
mysql_query("INSERT INTO pops (id, popname) VALUES (LAST_INSERT_ID(), '$pop')");
}
PDO php: Код подключения к базе данных:
<?php
$dbhost = 'localhost';
$dbname = 'yourDB';
$dbuser = 'root';
$dbpass = '';
try {
$db = new PDO("mysql:host={$dbhost};dbname={$dbname}",$dbuser,$dbpass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) {
echo "Connection error: ".$e->getMessage();
}
?>
и php код:
$pop= implode(', ', $_POST['pop']);
$statement = $db->prepare("INSERT INTO popTable (pop) VALUES (?)");
$statement->execute(array($pop));
$success_message = "Order's has been inserted successfully.";
HTML:
<form action="pop_form">
<input type="checkbox" name="pop[]" value="pop1">pop1<br>
<input type="checkbox" name="pop[]" value="pop2">pop2<br>
<input type="checkbox" name="pop[]" value="pop3">pop3<br>
<input type="checkbox" name="pop[]" value="pop4">pop4 <br>
<input type="checkbox" name="pop[]" value="pop5">pop5<br>
<input type="checkbox" name="pop[]" value="pop6">pop6 <br>
<input type="checkbox" name="pop[]" value="pop7">pop7<br>
<input type="checkbox" name="pop[]" value="pop8">pop8 <br>
<input type="submit" value="Submit"/>
</form>