【问题标题】:How do I insert multiple checkbox values into a table?如何将多个复选框值插入表中?
【发布时间】:2013-12-09 05:04:00
【问题描述】:

我似乎找不到或想出一个可行的解决方案来将表单中的多个复选框值插入到表中。我来的结束是将仅一个复选框值的值插入表中。请指出我如何插入多个复选框值而不仅仅是一个。

在下面找到我目前所拥有的:

我的表格:

<html>
<body>
<form method="post" action="chk123.php">
Flights on: <br/>
<input type="checkbox" name="Days" value="Daily">Daily<br>
<input type="checkbox" name="Days" value="Sunday">Sunday<br>
<input type="checkbox" name="Days" value="Monday">Monday<br>
<input type="checkbox" name="Days" value="Tuesday">Tuesday <br>
<input type="checkbox" name="Days" value="Wednesday">Wednesday<br>
<input type="checkbox" name="Days" value="Thursday">Thursday <br>
<input type="checkbox" name="Days" value="Friday">Friday<br>
<input type="checkbox" name="Days" value="Saturday">Saturday <br>
<input type="submit" name="submit" value="submit">
</form>
</body>
</html>

我的 php 文件读取并插入表中的值:

<?php

// Make a MySQL Connection
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("test") or die(mysql_error());

$checkBox = $_POST['Days'];

if(isset($_POST['submit']))
{
    for ($i=0; $i<sizeof($checkBox); $i++)
        {
            $query="INSERT INTO example (orange) VALUES ('" . $checkBox[$i] . "')";     

            mysql_query($query) or die (mysql_error() );
        }
    echo "Complete";

}

?>

【问题讨论】:

  • 对 mysql_query 的每次调用都很昂贵,请考虑通过在值之后链接 () 将查询合并到单个插入。比如 ('a'), ('b'), ('c'), ...
  • 所有mysql_*() 函数都是officially deprecated (不再支持/维护),将来会是removed。您应该使用PDOMySQLi 更新您的代码,以确保未来的功能。您的代码也容易受到 SQL 注入的攻击。

标签: php mysql checkbox multipleselection


【解决方案1】:

你应该指定

<input type="checkbox" name="Days[]" value="Daily">Daily<br>

作为数组。

[] 添加到所有名称Days 并像数组一样在php 中工作。

之后,您可以INSERTdb 不同列的值,或者使用implode 并将值保存到一列中。


没有测试过,但是你可以这样试试。不要忘记将mysql 替换为mysqli

<html>
<body>
<form method="post" action="chk123.php">
Flights on: <br/>
<input type="checkbox" name="Days[]" value="Daily">Daily<br>
<input type="checkbox" name="Days[]" value="Sunday">Sunday<br>
<input type="checkbox" name="Days[]" value="Monday">Monday<br>
<input type="checkbox" name="Days[]" value="Tuesday">Tuesday <br>
<input type="checkbox" name="Days[]" value="Wednesday">Wednesday<br>
<input type="checkbox" name="Days[]" value="Thursday">Thursday <br>
<input type="checkbox" name="Days[]" value="Friday">Friday<br>
<input type="checkbox" name="Days[]" value="Saturday">Saturday <br>
<input type="submit" name="submit" value="submit">
</form>
</body>
</html>

<?php

// Make a MySQL Connection
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("test") or die(mysql_error());

$checkBox = implode(',', $_POST['Days']);

if(isset($_POST['submit']))
{       
    $query="INSERT INTO example (orange) VALUES ('" . $checkBox . "')";     

    mysql_query($query) or die (mysql_error() );

    echo "Complete";

}

?>

【讨论】:

  • 太棒了!我检查了它,它在一列中节省了几天。如何让每一天都保存在每一行?
  • INSERT INTO example (column1, column2, ...) VALUES ($_POST['Days'][0], $_POST['Days'][1], ...)
  • 非常抱歉 viakondratiuk,我的意思是每一行而不是列
  • 在这种情况下,只需更改您的 html 并且您的代码应该可以工作。
  • SirBT,您介意分享将 MySql 中的复选框值保存在单独的行中的解决方案吗?它将帮助我理解如何正确编写它。
【解决方案2】:

你需要在 HTML 中通过声明数组

<input type="checkbox" name="Days[]" value="Daily">

你也可以像这样用一个查询插入多个项目

$query = "INSERT INTO example (orange) VALUES ";
for ($i=0; $i<count($checkBox); $i++)
    $query .= "('" . $checkBox[$i] . "'),";
$query = rtrim($query,',');
mysql_query($query) or die (mysql_error() );

还要记住mysql_* 函数是officially deprecated,因此不应在新代码中使用。您可以改用 PDO 或 MySQLi。请参阅this answer on SO 了解更多信息。

【讨论】:

    【解决方案3】:

    我认为这应该可行.. :)

    <input type="checkbox" name="Days[]" value="Daily">Daily<br>
    <input type="checkbox" name="Days[]" value="Sunday">Sunday<br>
    

    【讨论】:

    • 请说得具体一点。
    • 我想你会明白的.. :(
    【解决方案4】:

    我认为你应该 $_POST[][],我试过了,它可以工作 :)),tks

    【讨论】:

    • 请提供带有代码示例的完整答案,以帮助回答问题。谢谢!
    猜你喜欢
    • 2014-12-05
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 2022-07-28
    • 2021-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多