【问题标题】:Syntax error while trying to insert date with interval value to a date time field尝试将具有间隔值的日期插入日期时间字段时出现语法错误
【发布时间】:2019-10-10 02:38:46
【问题描述】:

我有以下代码用于将值插入到数据库中,看起来我在“DATE_ADD(NOW(), INTERVAL 2 DAY));

后端表格中有一个名为 vkeyexpire 的字段,它是一个日期时间列,我在 bind_param 语句中传递一个“s”作为参数

我试过了,好像还是不行

这是我的代码:

$sql = "INSERT INTO register (firstname, lastname, email,password, classof,country, town, comment,verified, vkey,vkeyexpire) VALUES(?, ?, ?, ?, ?,?,?,?,?,?,?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param('ssssssssiss', $firstname, $lastname,$email,$password,$classof,$country,$town,$comment, $verified, $vkey, DATE_ADD(NOW(), INTERVAL 2 DAY));
$stmt->execute();

我收到以下错误消息:

解析错误:语法错误,意外 '2' (T_LNUMBER),应为 ')' 在 C:\xampp\htdocs\USS\controllers\register_server.php 第 110 行

【问题讨论】:

  • DATE_ADD(NOW(), INTERVAL 2 DAY) 不是有效的 PHP 代码。如果不需要任何转义,为什么不直接将其添加到查询中?

标签: php mysql


【解决方案1】:

您不能将 SQL 函数放入 PHP 代码中。您需要在 SQL 中调用DATE_ADD()

$sql = "INSERT INTO register (firstname, lastname, email,password, classof,country, town, comment,verified, vkey,vkeyexpire) 
        VALUES(?, ?, ?, ?, ?,?,?,?,?,?,DATE_ADD(NOW(), INTERVAL 2 DAY))";
$stmt = $conn->prepare($sql);
$stmt->bind_param('ssssssssis', $firstname, $lastname,$email,$password,$classof,$country,$town,$comment, $verified, $vkey);
$stmt->execute();

【讨论】:

  • 我必须将 DATE_ADD() 定义为 MYsql 后端表中的默认值吗?
  • 如果您在 INSERT 查询中明确分配它,为什么需要这样做?在 MySQL 8.0.13 之前,您甚至不允许使用表达式作为默认值。
【解决方案2】:

我能够在插入语句的 value 部分中使用 DATE ADD using NOW(), + INTERVAL 2 DAY) 解析 php 中的 INSERT 准备语句。

在 bind_Param 中,不要将其包含在字符串中。

    $sql = "INSERT INTO register (firstname, lastname, email,password, classof,country, town, comment,verified, vkey,vkeyexpire) VALUES(?, ?, ?, ?, ?,?,?,?,?,?,now() + INTERVAL 2 day)";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param('ssssssssis', $firstname, $lastname,$email,$password,$classof,$country,$town,$comment, $verified, $vkey);
        if ($stmt->execute())
        {

enter image description here

【讨论】:

    猜你喜欢
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 2013-07-26
    • 2012-01-23
    • 2012-02-28
    • 1970-01-01
    相关资源
    最近更新 更多