Php 如何将多复选框结果存储到mysql表中
我想知道将多个复选框表单的结果存储到mysql表中的更好方法是什么 我可以看到两种解决办法,但也许还有其他办法 -复选框中的一个字段 -一个字段用于所有带有序列化数据的复选框Php 如何将多复选框结果存储到mysql表中,php,mysql,database-design,Php,Mysql,Database Design,我想知道将多个复选框表单的结果存储到mysql表中的更好方法是什么 我可以看到两种解决办法,但也许还有其他办法 -复选框中的一个字段 -一个字段用于所有带有序列化数据的复选框 thx仅为我自己说:如果我一开始就不厌其烦地为每列存储一个复选框值,我会发现以后查询存储的复选框值要容易得多。但是当然了 每列存储一个值也可以使这些值规范化,这是(或应该是)我设计表的主要目标之一。仅就我个人而言:如果我一开始就不厌其烦地每列存储一个复选框值,我会发现以后查询存储的复选框值要容易得多。但是当然了 每列存储一
thx仅为我自己说:如果我一开始就不厌其烦地为每列存储一个复选框值,我会发现以后查询存储的复选框值要容易得多。但是当然了
每列存储一个值也可以使这些值规范化,这是(或应该是)我设计表的主要目标之一。仅就我个人而言:如果我一开始就不厌其烦地每列存储一个复选框值,我会发现以后查询存储的复选框值要容易得多。但是当然了 每列存储一个值也可以使这些值标准化,这是(或应该是)我设计表的主要目标之一。
- 复选框旁的一个字段肯定不是他们要走的路,这会给您带来比其他任何事情都更多的麻烦
- 如果您确实需要将结果存储在同一个表中,那么序列化是最好的,只要您知道无法基于这些值进行SQL查询
- 最好的方法是创建一个NxN表,将原始表链接到另一个表,在该表中可以列出可能的复选框值。这也是这种情况下建议的标准化
- 复选框旁的一个字段肯定不是他们要走的路,这会给您带来比其他任何事情都更多的麻烦
- 如果您确实需要将结果存储在同一个表中,那么序列化是最好的,只要您知道无法基于这些值进行SQL查询
- 最好的方法是创建一个NxN表,将原始表链接到另一个表,在该表中可以列出可能的复选框值。这也是这种情况下建议的标准化
- 我同意维托·梅洛的观点,创建一个表格,其中每个复选框映射到一个特殊字段。这并没有那么多开销,所以省去你自己的麻烦吧
另外,我猜您正在使用表单将这些答案发布回服务器
如果是这样,这里有一个提示:
当您将包含复选框的表单发布到服务器端PHP页面时,您可以选中以下复选框:
HTML:
<form>
<input type="checkbox" name="chk1" />
<input type="checkbox" name="chk2" />
<input type="submit" name="myChkSubmit" />
</form>
PHP回发处理程序:
<?php
//Correct way to retrieve your checkboxes
$chk1 = FALSE;
$chk2 = FALSE;
if( isset($_POST['chk1']) )
{
$chk1 = TRUE;
}
if( isset($_POST['chk2']) )
{
$chk2 = TRUE;
}
//WRONG WAY
$chk1 = FALSE;
$chk2 = FALSE;
if( isset($_POST['chk1']) )
{
$chk1 = $_POST['chk1']; //This will always evaluate to "undefined"
}
if( isset($_POST['chk2']) )
{
$chk2 = $_POST['chk2']; //This will always evaluate to "undefined"
}
//NOTE: the reason the above example is incorrect is because the form will indicate checked
// status of a check box by setting the POST array element, but does not set a value
// for that element. If the element is set in POST it was checked, if it is not set,
// it will not be a recognized index in the POST array.
我同意Vitor Mello的观点,创建一个表格,其中每个复选框映射到一个特殊字段。这并没有那么多开销,所以省去你自己的麻烦吧
另外,我猜您正在使用表单将这些答案发布回服务器
如果是这样,这里有一个提示:
当您将包含复选框的表单发布到服务器端PHP页面时,您可以选中以下复选框:
HTML:
<form>
<input type="checkbox" name="chk1" />
<input type="checkbox" name="chk2" />
<input type="submit" name="myChkSubmit" />
</form>
PHP回发处理程序:
<?php
//Correct way to retrieve your checkboxes
$chk1 = FALSE;
$chk2 = FALSE;
if( isset($_POST['chk1']) )
{
$chk1 = TRUE;
}
if( isset($_POST['chk2']) )
{
$chk2 = TRUE;
}
//WRONG WAY
$chk1 = FALSE;
$chk2 = FALSE;
if( isset($_POST['chk1']) )
{
$chk1 = $_POST['chk1']; //This will always evaluate to "undefined"
}
if( isset($_POST['chk2']) )
{
$chk2 = $_POST['chk2']; //This will always evaluate to "undefined"
}
//NOTE: the reason the above example is incorrect is because the form will indicate checked
// status of a check box by setting the POST array element, but does not set a value
// for that element. If the element is set in POST it was checked, if it is not set,
// it will not be a recognized index in the POST array.
这很有趣——两种观点相隔180度。为什么您认为他(或某人)不想查询这些复选框值?这不是将值放入数据库的一个原因吗?只是为了让他们可以被查询?也就是说,如果它们永远不会被查询,为什么还要麻烦将它们存储在DB表中呢?这很有趣——两个意见之间相隔180度。为什么您认为他(或某人)不想查询这些复选框值?这不是将值放入数据库的一个原因吗?只是为了让他们可以被查询?也就是说,如果它们永远不会被查询,为什么还要麻烦将它们存储在DB表中呢?