如何将复选框值保存到 MySQL 数据库?

Posted

技术标签:

【中文标题】如何将复选框值保存到 MySQL 数据库?【英文标题】:How to save checkbox value to MySQL database? 【发布时间】:2011-08-05 13:22:34 【问题描述】:

我有以下 html

<label for="live">Live</label>
<input type="checkbox" name="live" id="live" />

如何使用 SQL INSERT 将text value of selected = '1'/ 或 text value of unchecked = '0' 保存到数据库?

非常感谢任何建议。

php 处理 html 表单(此时 'live' 是一个输入):

<?php
    //Start session
    session_start();

    //Include database connection details
    require_once('../inc/config.php');

    //Connect to mysql server
    $link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
    if(!$link) 
        die('Failed to connect to server: ' . mysql_error());
    
    if($link) 
        echo "DB SUCESS <br />";
    

    //Select database
    $db = mysql_select_db(DB_DATABASE);
    if(!$db) 
        die("Unable to select database");
    
    if($db) echo "TABLE SUCCESS<br />"; 

    //Function to sanitize values received from the form. Prevents SQL injection
    function clean($str) 
        $str = @trim($str);
        if(get_magic_quotes_gpc()) 
            $str = stripslashes($str);
        
        return mysql_real_escape_string($str);
    

    //Sanitize the POST values
    $live = clean($_POST['live']);
    $content = clean($_POST['content']);


        //Create INSERT query
    $qry = "INSERT INTO news(live, content) VALUES('$live','$content') ";
    $result = @mysql_query($qry);

    //Check whether the query was successful or not
    if($result) 
        //header("location: ../form/register-success.php");
        echo "Succes";      
        exit();
    else 
        die("Query failed");
    
?>

【问题讨论】:

如果这就是你所拥有的一切,那么你还有很长的路要走。你有什么 PHP 代码?您是否尝试过任何用于数据库交互的 PHP 函数?你的数据库的架构是什么?您是使用标准表单提交,还是想使用 AJAX? Inserting checkbox values into database的可能重复 @matt 是的,对不起.. 一秒钟。 DB 有一个表,其列 'live' VARCHART 1 个字符长。 PHP 代码是一个单独的文件 - 没有 AJAX。 @hakre - 您提交的示例完全不同,涉及一些循环。 @Pete:那么代码能走多远?你得到什么错误?你用过mysql_error()吗? 【参考方案1】:
<input type="checkbox" name="live" value="1" />Live<br />

^注意值“1”。如果有人选中该框,则为 1,否则为 NULL。 (不是 0!)

在下一页做一个 isset,如果设置好了,你可以继续,如果没有,就设置为零。

if (!isset($live)) $live = 0;

【讨论】:

我应该在“消毒”之前这样做吗? 不。获取您的 get 或 post 变量并立即清除它们,永远如此。您可能需要进行一些检查以确保它不会将 NULL 更改为字符串“null”或其他内容,(老实说不记得清理函数如何影响 null,抱歉)但要安全并始终清理任何用户在你用它做任何其他事情之前先输入。 快速一:如果'if (isset($live))' 的值是$live is 'on' - 不是1。这是为什么呢?【参考方案2】:

只有选中的 HTML 复选框才会在响应中发送值。使用isset

【讨论】:

选中的复选框 = '1' 的值? 是的,但没关系。如果 $_POST 数组中的变量已设置,则您已经知道它已被检查。 @Pete:也请参阅此答案:***.com/questions/242181/…

以上是关于如何将复选框值保存到 MySQL 数据库?的主要内容,如果未能解决你的问题,请参考以下文章

使用php将复选框值保存到数据库[关闭]

单击按钮时如何将多个复选框值保存到 Firebase

我正在尝试将复杂复选框表单的值存储在 mysql 数据库中

如何将 SELECT ALL 值或 SELECTED 复选框值插入 mysql 中的不同列?

将复选框值的多行保存到数据库中

如何通过关系将复选框值保存到 django 中的 ManyToManyField?