【发布时间】:2013-01-11 03:57:25
【问题描述】:
这似乎应该是一个简单的,但我已经搜索过,似乎无法弄清楚。我正在使用 PHP 更新 MySQL 数据库,该数据库将一些字段设置为布尔开关。网站上的触发器是一个复选框。当用户选中该框时,该值设置为 1,未选中时,该值为零。问题是,当我发送表单时,设置复选框时数据库更新正常,但是它不会将字段的值更新为零,它只是忽略它。我在未设置时回显了该值,以验证该变量是否确实设置为零。当我尝试清除文本框并且什么都不发送时,我发现了类似的问题。 MySQL 只是忽略它并且不会清除该字段。我错过了什么吗?
这是我正在使用的代码示例:
<?php
if ($_POST) {
if (isset($_POST['box1'])) {
$box1 = $_POST['box1'];
}
else {
$box1 = 0;
}
$query = "UPDATE table SET box1 = '{$box1}'";
$result = mysqli_query($dbc, $query);
}
?>
<form method="post" action="">
<input type="checkbox" name="box1"> Box 1
</form>
【问题讨论】:
-
echo $query;的结果是什么? -
你确定你没有错过
WHERE吗? -
复选框上的
value属性在哪里? -
不要在生产代码中使用这样的查询,它非常容易受到 SQL 注入攻击。攻击者可以将参数
box1设置为他们喜欢的任何值,然后将其放入查询中。 -
另外,我认为这些值设置为
on和` `(空)
标签: php html mysql post checkbox