SQL将我的输入日期转换为0000-00-00并且时间为00:00:17
问题描述:
我已经做了大量的研究并尝试了一堆东西,但没有运气,所以我想我应该在这里问一下。SQL将我的输入日期转换为0000-00-00并且时间为00:00:17
两件事。我有以下代码来选择日期和时间。
<input type="date" name="conDate">
<input type="time" name="conTime">
然后下面验证并将其转换为SQL存储。
$conDate = mysqli_real_escape_string($conn, isset($_POST['conDate'])) ? $_POST['conDate']: null;
$conTime = mysqli_real_escape_string($conn, isset($_POST['conTime'])) ? $_POST['conTime']: null;
$conDate = trim($conDate);
$conTime = trim($conTime);
$conDate = date('Y-m-d', strtotime(str_replace('/', '-', $conDate)));
$conTime = date("H:i", strtotime($conTime));
$sqlSum = "INSERT INTO software.concert(
concertTitle, concertDesc, concertLocation, concertDate, concertTime, concertHost, concertWallet, concertRevenue, concertAgeRes)
VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)";
$stmt = mysqli_prepare($conn, $sqlSum);
mysqli_stmt_bind_param($stmt, "ssddddddd", $title, $desc, $location, $conDate, $conTime, $hostID, $wallet, $revenue, $ageR);
mysqli_stmt_execute($stmt) or die(mysqli_error($conn));
mysqli_stmt_close($stmt);
concertDate(和concertTime)各字段的正确的名称,并为字段类型日期(和时间(0)),而且我经常试图调试,但对于一些奇怪的原因,SQL虽然输入值为2016-08-21(17:30为00:00:17),但表格始终将“0000-00-00”作为日期值。我尝试删除str_replace,即使有表作为varchar(10)输入日期,但即使这并没有帮助我。
我该怎么做才能防止0000-00-00和00:00:17被输入到数据库中,并确保适当的值或2016-08-21(yyyy-mm-dd)和17:30 (HH:MM)?我得到一个AI ID,并且我得到了标题,desc,位置等信息,等全部,它只是日期和时间。)
答
的日期/时间参数不绑定为双打,但字符串
...只是将它们绑定的所有字符串和让MySQL服务器的类型系统处理。
if (!mysqli_stmt_bind_param($stmt, "sssssssss", $title, $desc, $location, $conDate, $conTime, $hostID, $wallet, $revenue, $ageR)) {
throw new mysqli_sql_exception('bind failed');
}
+0
我的上帝你是一个传奇人物。我怎么没有看到。谢谢你解决了这个问题!日期现在是2016-08-21和时间17:30:00,正是我期待的!谢谢! –
为什么日期和时间隔离字段? – 2016-04-03 23:28:35
看来你的陈述是腐败的。做一个printf或回声,看看它并在这里发布。 – recycler
@Dagon在未来我需要将其分开以用于样式目的,除非这不起作用。无论如何,我只是想单独发帖。 –