php - 如何将 4 个单选按钮(每种颜色 4 个)存储到我的数据库中?
问题描述
我有 4 个单选按钮,当用户选择一个带有颜色的单选按钮时,它们每个都有 1 种颜色,它显示在表格单元格中。当用户单击提交时,它会将信息保存到我的数据库中,因此用户在返回网站时可以拥有完全相同的选项。
为了让您知道,我删除了数据库连接的详细信息。
我无法弄清楚我做错了什么。
$first = $_POST['white'];
$first = $_POST['red'];
$first = $_POST['orange'];
$first = $_POST['green'];
$sql = "INSERT INTO savecolor (white, red, orange, green) VALUES ('$first')";
我可能把这些搞砸了。我真的不知道。^^
<form action="include/dbh.inc.php" method="post">
<table id="table">
<tr>
<td>
<div class="white">
<input type="radio" name="first" value="white" onclick="setBgColor(this)" checked>
</div>
<div class="red">
<input type="radio" name="first" value="red" onclick="setBgColor(this)">
</div>
<div class="orange">
<input type="radio" name="first" value="orange" onclick="setBgColor(this)">
</div>
<div class="green">
<input type="radio" name="first" value="green" onclick="setBgColor(this)">
</div>
<br>
This is a text.
</td>
php代码
<?php
$dbServername = "";
$dbUsername = "";
$dbPassword = "";
$dbName = "";
$conn = mysqli_connect($dbServername, $dbUsername, $dbPassword, $dbName);
if(!$conn){
echo 'Not Connected To Server';
}
$first = $_POST['white'];
$first = $_POST['red'];
$first = $_POST['orange'];
$first = $_POST['green'];
$sql = "INSERT INTO savecolor (white, red, orange, green) VALUES('$first')";
if(!mysqli_query($conn,$sql))
{
echo 'Not Inserted';
}
else
{
echo 'Inserted';
}
?>
解决方案
要获取值,您需要使用输入的名称属性。
你应该使用 mysqli_real_escape_string 来保证安全。mysqli_real_escape_string
$first = mysqli_real_escape_string($conn, $_POST['first']);
//Not $first = $_POST['first']
//Or not $first = $_POST['white'];
现在您需要将它插入到您的数据库中。您的数据库应该只保存选定的颜色。
你不需要像红色、白色、橙色、绿色这样的列
你只需要一个像 user_color 这样的列
重建数据库后,让我们插入它。
$query = mysqli_query($conn, "INSERT INTO savecolor (user_color) VALUES ('$first')");
//Check it
if ($query) {
echo 'Inserted';
} else {
echo 'Not Inserted';
}
笔记:
你应该在一切之前检查帖子。
<?php
if (empty($_POST)) {
//There is no post so exit.
exit(0);
}
....
推荐阅读
- python - Python:使用 xlrd 库从 excel 电子表格中读取数据给了我不正确的行数
- json - 使用 Scala 在 Spark 中将 JSON 对象更改为 JSON 列表
- javascript - 按下 esc 键时有没有办法滚动到顶部?
- javascript - 如何更改 React Native 中特定列的样式?
- flutter - 如何使用音量或电源按钮双击在后台打开颤振应用程序?
- maven - 无法解决来自 POM 中本地仓库的依赖关系
- rust - 如何读取前 N 行,然后读取字节?
- android-recyclerview - DiffUtil areContentsTheSame() 在 RecycleViewAdapter 中的 List 内容更新后总是返回 true
- laravel - 部署到托管 Laravel 8 后找不到模型
- android - Android 中的 NestedScrollingChild、NestedScrollingChild2 和 NestedScrollingChild3 有什么区别?