$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收到了一堆零。
答案 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}} 未来的问题。