【发布时间】:2017-10-03 05:49:27
【问题描述】:
关于使用 PDO (PHP) 在数据库中保存来自多个复选框的数据(我的表单中很少)的 2 个问题。我只是展示代码的相关部分,让大家更简单。
A) 我编写的代码有效(仍然正确保存所有数据),但它仍然给我一个失败消息,您可以在下面看到。为什么,或者我可以做得更好?
B) 它将选中的复选框保存为数据库中的数组。稍后我想通过将数据库中的数据恢复为我的原始形式来更改数据 - 如果它像数组一样保存,它会产生问题吗?如果是,你会建议做什么更好。
警告: implode ( ) : 在线传递的参数无效 ...
$p2 = implode(',',$product_2);
$p3 = implode(',',$product_3);
$p1 = implode(',',$product_1); which I defined first seems to be fine
<?php
if(isset($_POST['send']))
{
require("php/tconnect.php");
$id = $_POST['id'];
$name = $_POST['name'];
$date = $_POST['date'];
$p1 = implode(',',$product_1);
$p2 = implode(',',$product_2);
$p3 = implode(',',$product_3);
$sql = "INSERT INTO database (id, name, date) VALUES (:id, :name, :date, '$p1', '$p2', '$p3')";
$stmt = $dbh->prepare($sql);
$stmt->bindValue(':id', $id);
$stmt->bindValue(':name', $name);
$stmt->bindValue(':date', $date);
$stmt->execute();
echo "Datas saved";
}
?>
HTML
<input type="checkbox" name="product_1[]" value="apple" id="product_1_apple">
Apple
</label>
<label class="checkbox-inline">
<input type="checkbox" name="product_1[]" value="Banana" id="product_1_banana">
Banana
</label>
接下来的表格看起来很相似
<input type="checkbox" name="product_2[]" value="water" id="product_2_water">
Water
</label>
<label class="checkbox-inline" >
<input type="checkbox" name="product_2[]" value="juice" id="product_2_juice">
Juice
</label>
【问题讨论】:
-
虽然警告不是错误,但几乎总是意味着您的代码中有一些不正确的地方,可能您的某个产品没有被保存。您收到警告(或警告)的行中的代码是什么?
-
谢谢你,没错,它的这些行:$p2 = implode(',',$product_2);和 $p3 = implode(',',$product_3); - 我第一次使用 $p1 = implode(',',$product_1);我没有收到警告。
标签: php arrays database post checkbox