我正在尝试使用html表单更改MySQL中的bool预设,该表单调用PHP页面将信息输入表中。
以下是代码:
addEvent.php
$all_day = mysqli_real_escape_string($con, $_POST['all_day']);
if ($all_day != '1')
{
$all_day = '0';
}
$sql="INSERT INTO db . table (title, start, end, all_day)
VALUES ('$title', '$start', '$end', '$all_day')";
html表格:
All Day?: <input type="checkbox" name="all_day" inputValue="1">
我遇到的问题是,无论我尝试做什么,都要做&#34; $ all_day&#34;不会从0变为1.如果有人能指出这个问题,我将不胜感激。
答案 0 :(得分:3)
您使用的是错误的属性。使用value=""
代替inputValue
。
$con = new mysqli('localhost', 'username', 'password', 'database');
if(isset($_POST['submit'])) {
$all_day = isset($_POST['all_day']) ? $_POST['all_day'] : 0;
// defaults to 0 if not checked
$prepare = 'INSERT INTO `table_name` (title, start, end, all_day) VALUES (?, ?, ?, ?)';
$stmt = $con->prepare($prepare);
// assuming $title, $start, $end is declared on your end
$stmt->bind_param('sssi', $title, $start, $end, $all_day);
$stmt->execute();
if($stmt->affected_rows > 0) {
// inserted
} else {
// it did not insert
}
}
?>
<form method="POST">
<!-- inputValue? no! the correct attribute is "value" -->
All Day?: <input type="checkbox" name="all_day" value="1">
<input type="submit" name="submit" />
</form>
只是为了清楚:
$_POST
中将未定义该复选框。0.
答案 1 :(得分:1)
对字符串使用mysqli_real_escape_string()
。 all_day
不是字符串。您应该使用$all_day = (int)(bool)$_POST['all_day']
将其转换为0或1。如果为空,它将自动设置为0或0,如果有的话,它将自动设置为。
然而,请注意,如果未选中该复选框,则根本不设置$_POST['all_day']
并且读取它将抛出Notice
(根据您的PHP设置可能会被禁止)。所以你可能想要这样做:
$all_day = (int)isset($_POST['all_day']);
答案 2 :(得分:0)
尝试将inputValue更改为value:
<input type="checkbox" name="all_day" value="1">
答案 3 :(得分:0)
这与php无关。可以使用value=""
属性来完成。它指定元素的值。使用下面给出的代码
All Day?: <input type="checkbox" name="all_day" value="1">
答案 4 :(得分:-1)
您在if子句
期间分配 If ($var! = '1')
你做错了两件事。
1)将var分配给你应该使用的地方!==
并且2)尝试将var验证为字符串而不是整数(丢失引号)