Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.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 使用当前行值更新多行_Php_Mysql - Fatal编程技术网

Php 使用当前行值更新多行

Php 使用当前行值更新多行,php,mysql,Php,Mysql,我不知道标题是否清楚,但我会在这里解释。我们的数据库有数千条记录,这些表中有几个datetime列。我们必须使用unix\u时间戳转换为int,但我无法在MySQL中找到一个更新这些字段的查询 假设我有一个简单的表,其中有这样一个字段: user_table : id : int, name : string, date_joined : datetime; 要将所有这些日期字段更改为int,我认为添加int列并将日期作为int复制到新列中,然后删除旧列并重命名我的新列

我不知道标题是否清楚,但我会在这里解释。我们的数据库有数千条记录,这些表中有几个datetime列。我们必须使用unix\u时间戳转换为int,但我无法在MySQL中找到一个更新这些字段的查询

假设我有一个简单的表,其中有这样一个字段:

user_table :
    id : int,
    name : string,
    date_joined : datetime;
要将所有这些日期字段更改为int,我认为添加int列并将日期作为int复制到新列中,然后删除旧列并重命名我的新列可能是一个解决方案。我构建了一个小php脚本,然后我的脚本将生成数千个MySQL查询,这相当长。我的脚本将运行如下查询:

UPDATE user_table SET date_joined_int=UNIX_TIMESTAMP(date_joined) where id = 1
...

用一个MySQL查询就可以做到这一点吗?

你已经很接近了。只需删除WHERE子句即可更新单个查询中的所有行

UPDATE user_table 
    SET date_joined_int = UNIX_TIMESTAMP(date_joined)

如果删除
WHERE
子句,则
UPDATE
将应用于表中的所有行

UPDATE user_table SET date_joined_int=UNIX_TIMESTAMP(date_joined)

您是对的,您应该添加新的
INT

ALTER TABLE user_table ADD date_joined_int INT(11) not null;
而不是转换日期

UPDATE user_table SET date_joined_int = UNIX_TIMESTAMP(date_joined);

最后删除
date\u joined
列,并将
date\u joined\u int
重新发送到
date\u joined

是否严重?哈哈哈哈,让我来试一试如果你觉得这很有趣的话,试着用一个没有WHERE子句的
DELETE
。邪恶的笑