我试图在我的数据库表中存储一个字符串(如1,2,3,...),但存储的数据只有1(我在表列中只看到1而不是1,2,3, ...)。我想从php表单发布checkbox_id并将这些数字存储在表格列中(该数字取决于选中的复选框以及检查了多少个复选框。)
以下是代码:
<form action="insert.php" method="post"><div>
<div class="feed-activity-list"><div style="border: 0.5px solid green; border-right-style:none;" class="input-group m-b"><span class="input-group-addon">
<input type="checkbox" id="checkbox" name="opt[]" value="'.$points.'"></span>
<input type="hidden" name="opt2[]" value="'.$row_select4['id'].'"> </div></div>
提交按钮(在php回音之外):
<button type="submit" class="btn btn-w-m btn-primary">ΕΞΑΡΓΥΡΩΣΗ</button>
</form>
insert.php:
if(isset($_POST['opt2'])){
foreach ($_POST['opt2'] as $value) {
$gift = $_POST['opt2'];
$sliced = array_slice($gift, 0, -1);
$gift_id = implode(" ", $sliced);
}
echo $gift_id;
$stmt_insert = $conn->prepare("INSERT INTO transactions (gift_id) VALUES (:gift_id)"));
$stmt_insert->bindParam(':gift_id', $gift_id);
$stmt_insert->execute();
答案 0 :(得分:2)
当您将复选框值作为数组发布时,您有一些空白字段。你需要过滤它们,所以使用array_filter。
$filter_arr = array_filter($_POST['opt2']);
$gift_id = implode(",", $filter_arr);
并将$gift_id
存储到数据库中,这是已检查的ID字符串。
答案 1 :(得分:-1)
请使用逗号进行内爆。
$gift_id = implode(",", $sliced);
此外,您在foreach中的代码不正确。在foreach中使用$ value。
foreach ($_POST['opt2'] as $value) {
$gift = $value;
$sliced = array_slice($gift, 0, -1);
$gift_id = implode(" ", $sliced);
}