2016-04-03 39 views
0

我已经做了大量的研究并尝试了一堆东西,但没有运气,所以我想我应该在这里问一下。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,位置等信息,等全部,它只是日期和时间。)

+0

为什么日期和时间隔离字段? – 2016-04-03 23:28:35

+0

看来你的陈述是腐败的。做一个printf或回声,看看它并在这里发布。 – recycler

+0

@Dagon在未来我需要将其分开以用于样式目的,除非这不起作用。无论如何,我只是想单独发帖。 –

回答

1

的日期/时间参数不绑定为双打,但字符串
...只是将它们绑定的所有字符串和让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,正是我期待的!谢谢! –

相关问题