我正在尝试创建一个表单,其中一部分将允许用户记录日期。我在网上找到了一段代码,它为用户创建了一个日历来选择他们的日期,但是当我尝试将其上传到数据库时,我收到一个空的查询错误。任何人都可以看到我的错误在哪里吗?我正在尝试查找有关在 html 表单中使用日历的教程,但在我的搜索中没有任何有价值的东西,如果有人可以推荐一个我会非常感激。
<html>
<head>
<link href="http://ajax.googleapis.com/ajax/
libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
<script>
$(document).ready(function() {
$("#datepicker").datepicker();
});
</script>
</head>
<body>
<form action="uploadCalendar.php" method="post">
<strong>Date :</strong> <input name="date" id="datepicker" />
<input type="submit" name="submit" value="Submit"/>
</form>
</body>
</html>
这是我将其上传到数据库的代码。我只是在引入多个字段以上传到数据库之前练习日历元素
$Date = $_POST['date'];
$query = $mysqli->query("INSERT INTO `calendar` (`date`) VALUES '$Date'");
if(!mysqli_query($mysqli, $query))
{
echo "ERROR".mysqli_errno($query);
}
else
{
header ("Location: calendar.php");
}
你正在将 mysqli 的 OO 版本与过程混合在一起。
$query = $mysqli->query("INSERT INTO `calendar` (`date`) VALUES '$Date'");
如果查询成功,这将返回 TRUE,因此,如果查询成功,则返回以下行:
if(!mysqli_query($mysqli, $query))
正在尝试执行另一个查询,将 TRUE 指定为查询值。此外,我认为您的查询中存在语法错误,即我认为值周围应该有 (),因为您正在指定列。试试这个:
$Date = $_POST['date'];
$ret = $mysqli->query("INSERT INTO `calendar` (`date`) VALUES ('" . $mysqli->real_escape_string($Date) . "');");
if(!$ret)
{
echo "ERROR";
}
else
{
header ("Location: calendar.php");
}
** 此外,在数据库查询中使用用户输入之前,请始终确保对其进行转义。
我假设字段date
的类型为 DATE。DATE 需要格式为 yyyy-mm-dd 的日期值。
但是,您的日历返回格式为 mm/dd/yyyy 的值
因此,您需要更改 MySQL 查询中的格式:
$query = $mysqli->query("INSERT INTO `calendar` (`date`) VALUES (STR_TO_DATE('$Date', '%m/%d/%Y'))");
或者更改从 jQuery 返回的日期格式,使其适合常规日期格式。