Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Mysql中显示创建日期_Php_Mysql - Fatal编程技术网

Php 在Mysql中显示创建日期

Php 在Mysql中显示创建日期,php,mysql,Php,Mysql,我以前问过类似的问题,但仍然没有得到有效的答案。 因此,我的数据库中有一个表,其中包含有关用户的第一个姓名、电子邮件。。。和2个包含creationcreated日期和UpdateUpdate日期的字段。 更新后的字段的类型为TIMESTAMP,默认值为CURRENT_TIMESTAMP,attributes为on CURRENT_TIMESTAMP。并且创建的字段的类型为datetime,而非null默认值为none。 问题是,当显示创建日期时,我在每个用户旁边看到0000-00-00:00:

我以前问过类似的问题,但仍然没有得到有效的答案。 因此,我的数据库中有一个表,其中包含有关用户的第一个姓名、电子邮件。。。和2个包含creationcreated日期和UpdateUpdate日期的字段。 更新后的字段的类型为TIMESTAMP,默认值为CURRENT_TIMESTAMP,attributes为on CURRENT_TIMESTAMP。并且创建的字段的类型为datetime,而非null默认值为none。 问题是,当显示创建日期时,我在每个用户旁边看到0000-00-00:00:00。 以下是将用户添加到数据库的代码:

$first_name = trim($_REQUEST['first_name']);
$last_name = trim($_REQUEST['last_name']);
$username = trim($_REQUEST['username']);
$password = trim($_REQUEST['password']);
$email = trim($_REQUEST['email']);
$created = strftime("%Y-%m-%d %H:%M:%S", time());
$insert_sql = sprintf("INSERT INTO users (first_name, last_name, username, password, email, created)" .
"VALUES('%s', '%s', '%s', '%s', '%s', '%s');",
mysql_real_escape_string($first_name),
mysql_real_escape_string($last_name),
mysql_real_escape_string($username),
mysql_real_escape_string(crypt($password, $username)),
mysql_real_escape_string($email),
mysql_real_escape_string($created));
mysql_query($insert_sql) or die(mysql_error());
请帮忙,我尝试了各种功能,比如date,现在仍然不起作用

编辑:这就是我的表格显示的内容:

mysql> SELECT updated, created from users;
+---------------------+---------------------+
| updated             | created             |
+---------------------+---------------------+
| 2012-09-21 09:09:49 | 0000-00-00 00:00:00 |
| 2012-09-21 09:27:27 | 0000-00-00 00:00:00 |
| 2012-09-22 11:36:19 | 0000-00-00 00:00:00 |
| 2012-09-22 11:43:35 | 0000-00-00 00:00:00 |
+---------------------+---------------------+

您正在时间戳字段中输入字符串;相反,请使用。您的查询应该是:

"INSERT INTO `users` (
     `first_name`,
     `last_name`,
     `username`,
     `password`,
     `email`,
     `created`) VALUES (
            '%s',
            '%s',
            '%s',
            '%s',
            '%s',
            NOW())"

也可以考虑迁移到利用准备好的语句。

澄清意见;该字段的类型无关紧要,因为如果您现在给出该字段,MySQL将知道如何处理它:

如果尝试插入UNIX\u时间戳,则此操作无效:


您能否检查这些记录的时间戳值是否为0000-00-00:00:00。 这是一个正常问题,如果您更改一个表,在MYSQL中创建列timestamp not null default CURRENT_timestamp,它会用时间戳0000-00-00:00:00更新以前的记录

解决方案是更新数据库记录,使其具有0000-00-00:00:00以外的值


希望有帮助

由于您的字段是时间戳,您需要输入:


我创建的字段是datetime。很抱歉,误读了它,如果是这样,@Burnkhalid给出的答案应该有效?OP明确地说它是一个datetime字段->,并且创建的字段的类型是type=datetime,所以你猜它是时间戳,对吗?它是什么类型并不重要;MySQL现在知道该怎么做了。这很奇怪,现在正常应该可以工作了,但事实就是这样。但是,当我输入phpmyadmin时,更新的字段存储准确的时间,而创建的字段存储零。使用“为表显示创建表”更新问题。键入“显示创建表用户”,然后粘贴输出。零告诉我您插入的是文字时间戳,而不是MySQL可以使用的正确类型。是的,记录在创建的字段中显示0000-00-00:00:00,但在更新的字段中显示的是准确的时间。那么您还好吗?当创建的字段为0000-00-00时,始终可以选择其他值?类似于选择IFcreated='0000-00-00 00:00:00','2010-01-01 00:00:00',创建为createdCheck this SQL-选择test.price,test.brid,选择iftest.timestamp='0000-00-00-00:00:00',现在选择test.timestamp作为测试时间;我的表是CREATE table test price int11 DEFAULT NULL,product varchar20 DEFAULT NULL,brid varchar20 DEFAULT NULL,timestamp timestamp NOT NULL DEFAULT CURRENT_timestamp。希望有帮助!我正在制作一份创建用户的文件副本-u-!现在很好。无论如何谢谢你的帮助。哈哈,我不相信自己。
mysql> create table temp (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, ts TIMESTAMP, dt DATETIME);
Query OK, 0 rows affected (0.00 sec)

mysql> insert into temp values ('',NOW(),NOW()),('',NOW(),NOW());
Query OK, 2 rows affected, 2 warnings (0.08 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from temp;
+----+---------------------+---------------------+
| id | ts                  | dt                  |
+----+---------------------+---------------------+
|  1 | 2012-09-22 13:38:50 | 2012-09-22 13:38:50 |
|  2 | 2012-09-22 13:38:50 | 2012-09-22 13:38:50 |
+----+---------------------+---------------------+
2 rows in set (0.00 sec)
mysql> insert into temp values ('',UNIX_TIMESTAMP(),UNIX_TIMESTAMP());
Query OK, 1 row affected, 3 warnings (0.00 sec)

mysql> select * from temp order by id desc limit 1;
+----+---------------------+---------------------+
| id | ts                  | dt                  |
+----+---------------------+---------------------+
|  7 | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 |
+----+---------------------+---------------------+
1 row in set (0.00 sec)
INSERT INTO users 
    (first_name, last_name, username, password, email, created)
    VALUES('%s', '%s', '%s', '%s', '%s', UNIX_TIMESTAMP());