无法将当前日期插入新行

时间:2016-04-08 04:08:05

标签: php mysql

$query = "INSERT INTO user (user_name, user_password, user_email, user_joindate) 
          VALUES ('$username', '$password', '$email', CURDATE())";


$result=mysqli_query($currentConnection, $query) or die ("Could not insert into database.");

它连接到数据库就好了,它正在命中或死掉错误(无法插入)。

user_joindate类型是''日期''因为我不想要不相关的小时时间。已经尝试过now()和current_timestamp,不起作用。

编辑:问题出在user_joindate查询中,因为当我删除它时,整个查询都有效,尽管user_joindate收到了一堆零。

4 个答案:

答案 0 :(得分:0)

如果要存储当前日期而不是设置默认值,则插入查询中的CURDATE()函数 像

CREATE TABLE Orders
(
OrderId int NOT NULL,
ProductName varchar(50) NOT NULL,
OrderDate datetime NOT NULL DEFAULT CURDATE(),
PRIMARY KEY (OrderId)
)

插入查询

INSERT INTO订单(ProductName)价值(' Jarlsberg Cheese')

答案 1 :(得分:0)

你能在这里写一个来自mysql的错误信息吗?如果您不知道如何获取错误消息,只需重写您的代码:

if(!mysqli_query($currentConnection, $query)) {
    echo mysqli_error($currentConnection);
}

没有错误消息,任何人都无法正确回答您

根据您粘贴到注释的错误输出,您的查询会尝试两次为唯一字段插入相同的值。看来你的user_id字段是主要字段但不是自动增量字段。只是尝试再次插入自动增量。 user_id字段每次都会设置一个唯一值。

答案 2 :(得分:0)

很简单,只需更改user_joindate字段的数据类型并设置 TIMESTAMP 数据类型,添加记录时也不需要插入值 像这样

$query = "INSERT INTO user (user_name, user_password, user_email) 
          VALUES ('$username', '$password', '$email')";


$result=mysqli_query($currentConnection, $query) or die ("Could not insert into database.");

答案 3 :(得分:0)

对于从CURDATE()保存到表中失败而导致的数据库错误,您可以更改导致错误的列,也可以手动为其提供值以避免重复。

如果您想更改user_id列,可以执行以下操作:

//this is incremental
ALTER TABLE user CHANGE user_id user_id INT(10) AUTO_INCREMENT PRIMARY KEY;

如果您想手动提供ID,请确保您的user_id数据类型位于 char / varchar /...中,并且您的查询如下:

$query = "INSERT INTO user (user_id, user_name, user_password, user_email, user_joindate) VALUES (uuid(), '$username', '$password', '$email', CURDATE())";
  

现在警告不要使用mysql_ * deprecated   正式从PHP 5.5开始,从PHP 7.0开始完全删除。   尝试使用最新的PDO / Mysqli来避免使用{{3}} / {{3}}   未来的问题。