使用html复选框和PHP更改MySQL TINYINT(1)

时间:2014-08-13 00:52:33

标签: php html mysql

我正在尝试使用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.如果有人能指出这个问题,我将不胜感激。

5 个答案:

答案 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验证为字符串而不是整数(丢失引号)