复选框添加多个值mysql

时间:2014-09-24 09:05:28

标签: php mysql checkbox

我有一个html页面,其中有一个表单并将结果保存到MySQL中。问题是复选框只在MySQL表上保存了一个值。为了在db列中保存多个值,我该怎么办?

HTML代码:

<input type="checkbox" name="rating[]" value="Homepage">Homepage
<input type="checkbox" name="rating[]" value="Facilities">Facilities
<input type="checkbox" name="rating[]" value="reservation">Reservation
<input type="checkbox" name="rating[]" value="Contact">Contact

PHP代码:

if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$sql="INSERT INTO db (firstname, lastname, password, email, address, postcode,   country, phonenumber, rating, subscribe)
VALUES ('$firstname', '$lastname', '$password', '$email', '$address', '$postcode','$country', '$phonenumber', '$rating', '$subscribe')";

if (!mysqli_query($con,$sql)) {
die('Error: ' . mysqli_error($con));
}
echo " Success!";

3 个答案:

答案 0 :(得分:1)

我认为你有三种选择。

首先

创建另一个表并用外键连接它们。

第二

使复选框具有值并进行位掩码。

例)

<input type="checkbox" name="something[]" value="1">blah
<input type="checkbox" name="something[]" value="2">blah2
<input type="checkbox" name="something[]" value="4">blah3

如果有人检查&#34; blah&#34;和&#34; blah3&#34;,使它们成为5.(1&amp; 4)

像这样:

for($i=0; $i<count($rating); $i++)
{
    $rating_value &= $rating[$i];
}

并以整数形式保存到数据库中。

第三

将它们连接成一个字符串并将其以字符串形式保存到数据库中(如VARCHAR)。

答案 1 :(得分:0)

如果$rating是数组,请尝试implode()

$sql="INSERT INTO db (firstname, lastname, password, email, address, postcode,   country, phonenumber, rating, subscribe)
VALUES ('$firstname', '$lastname', '$password', '$email', '$address', '$postcode','$country', '$phonenumber', '".implode(',',$rating)."', '$subscribe')";

答案 2 :(得分:-1)

我强烈建议您阅读以下内容:

但是你还没有PHP或HTML问题。您正试图将信息存储在没有地方的数据库中。

您至少需要两张额外的桌子:

  • rating主表格:

    • rating_id(自动增量或任意代码)
    • rating_value(例如,&#39;穷人&#39;,&#39;平均&#39;,&#39;好&#39; ...)

    ...存储可用评级的位置。

  • db_rating表:

    • db_iddb&#39}的主键)
    • rating_idrating&#39}的主键)

    ...存储关系的地方。

...并删除当前的db.rating列。