Php 如何将多复选框结果存储到mysql表中

Php 如何将多复选框结果存储到mysql表中,php,mysql,database-design,Php,Mysql,Database Design,我想知道将多个复选框表单的结果存储到mysql表中的更好方法是什么 我可以看到两种解决办法,但也许还有其他办法 -复选框中的一个字段 -一个字段用于所有带有序列化数据的复选框 thx仅为我自己说:如果我一开始就不厌其烦地为每列存储一个复选框值,我会发现以后查询存储的复选框值要容易得多。但是当然了 每列存储一个值也可以使这些值规范化,这是(或应该是)我设计表的主要目标之一。仅就我个人而言:如果我一开始就不厌其烦地每列存储一个复选框值,我会发现以后查询存储的复选框值要容易得多。但是当然了 每列存储一

我想知道将多个复选框表单的结果存储到mysql表中的更好方法是什么

我可以看到两种解决办法,但也许还有其他办法

-复选框中的一个字段

-一个字段用于所有带有序列化数据的复选框


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表中呢?