我有一个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!";
答案 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_id
(db
&#39}的主键)rating_id
(rating
&#39}的主键)...存储关系的地方。
...并删除当前的db.rating
列。