SQL将我的输入日期转换为0000-00-00,时间为00:00:17

时间:2016-04-03 23:25:45

标签: php html mysql date time

我做了很多研究并尝试了很多东西,但没有运气,所以我想我应该问一下。

两件事。我有以下代码来选择日期和时间。

<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)是字段的正确名称,字段类型为DATE(和TIME(0)),我经常尝试调试,但出于某种奇怪的原因,SQL表始终如一虽然输入的值是2016-08-21(以及17:30的00:00:17),但是将稿件作为日期值获取。我已经尝试删除str_replace,甚至将表作为varchar(10)来输入日期,但即便这样也没有帮助我。

我该怎么做才能阻止EA和00:00:17被输入数据库,并确保正确的值或2016-08-21(yyyy-mm-dd)和17:30( HH:MM)

(只是旁注,所有其他值都输入到数据库,因此语句本身检出,而不是日期和时间。我得到一个AI id,我得到标题,desc,位置等全部,它只是日期和时间。)

1 个答案:

答案 0 :(得分: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');
}
相关问题