如何将复选框值保存到 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 数据库?的主要内容,如果未能解决你的问题,请参考以下文章