【问题标题】:How to save checkbox value to MySQL database?如何将复选框值保存到 MySQL 数据库?
【发布时间】: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?
  • @matt 是的,对不起.. 一秒钟。 DB 有一个表,其列 'live' VARCHART 1 个字符长。 PHP 代码是一个单独的文件 - 没有 AJAX。
  • @hakre - 您提交的示例完全不同,涉及一些循环。
  • @Pete:那么代码能走多远?你得到什么错误?你用过mysql_error()吗?

标签: php mysql sql


【解决方案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:也请参阅此答案:stackoverflow.com/questions/242181/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-11
  • 1970-01-01
相关资源
最近更新 更多