checkbox、mysql和php有问题
我试图在窗体上使用复选框,并希望在我的DB中将值保存为1或0 在我的数据库中,有一个名为“subscribe”的字段,具有以下属性:checkbox、mysql和php有问题,php,mysql,forms,checkbox,Php,Mysql,Forms,Checkbox,我试图在窗体上使用复选框,并希望在我的DB中将值保存为1或0 在我的数据库中,有一个名为“subscribe”的字段,具有以下属性: TINYING(4) Not Null Default value = '0' 在我的html表单中,我有以下内容: <input type="checkbox" value="1" name="subscribe" checked>Subscribe to our newsletter<br /> 订阅我们的时事通讯 如果表单是在默
TINYING(4)
Not Null
Default value = '0'
在我的html表单中,我有以下内容:
<input type="checkbox" value="1" name="subscribe" checked>Subscribe to our newsletter<br />
订阅我们的时事通讯
如果表单是在默认的选中状态下提交的,那么记录将很好地传递到数据库
如果有人取消选中该复选框,则不会保存任何记录
知道为什么会这样吗?您需要看看php来帮助吗
谢谢,,
Nathanweb浏览器不会为未选中的复选框发送键值对。 做一个
print\r($\u POST)代码>以观察此情况
取消订阅除已发布的订阅值之外的所有值,或者使用隐藏的输入字段来存储您在表单中输入的复选框值。我认为您应该使用布尔(TINYINT(1))类型,而不是TINYINT(4)。并且不要将表单中的值直接传递到查询中。使用if()检查该值,并为每个变量的查询指定一个布尔值。大概是这样的:
$subscribe = 0;
if(isset($_POST['subscribe']) && $_POST['subscribe'] == "1")
$subscribe = 1;
mysql_query("... VALUES ('".$subscribed."' ...");
对于有效的XHTML,是否使用checked=“checked”
而不是checked
打字<代码>TINYING(4)
可能应该是:TINYINT(4)
是的,这只是一个打字错误。很抱歉。这是我正在使用的php:$addfeedback=“插入到反馈(用户、电子邮件、订阅、评论)值(“$”POST['user']”、“$”POST['email']”、“$”POST['subscribe']”、“$”POST['comments']”、“)$结果=mysql\u查询($addfeedback);将表单数据直接传递到查询中非常糟糕。谷歌关于正确的转义和SQL注入。谢谢血腥世界。很高兴知道这一点。我才刚刚开始,所以我想我会学会如何正确地做这件事(更重要的是通过像你这样的有用提示)——在这一点上,我仍然只是尝试获得基本的功能,并且对它为什么不工作感到困惑。有趣。好的,这听起来是个好办法。还感谢您提供了有效的XHTML提示。但是你知道为什么我现在不保存记录吗?我认为在DB中有一个默认值0应该可以。我很惊讶根本没有存储任何记录。默认值仅在没有为此指定值时使用。但在您的查询中,它的值为“”,为空字符串。那么,未选中是否为空字符串?但是为什么数据库拒绝记录,而不是用空字符串存储?Afaik是一个空字符串,而不是TINYINT(1)。或者可能是非空。我删除了非空,仍然没有改变。