Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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 当项目从特定状态移动到另一个特定状态时,更新/设置SQL查询时间戳_Php_Mysql - Fatal编程技术网

Php 当项目从特定状态移动到另一个特定状态时,更新/设置SQL查询时间戳

Php 当项目从特定状态移动到另一个特定状态时,更新/设置SQL查询时间戳,php,mysql,Php,Mysql,我有一个问题,我需要在我的数据库中设置一个时间戳,如果用户按特定顺序更改某些设置,我将在下面为您提供更多详细信息 数据库: 当前查询: PHP: 基本上只是一个选择/选项和输入字段。请注意,项目状态为选择/选项状态 问题是: 简言之,我希望当项目从收件箱移动到以项目状态工作时,项目开始更新为今天的时间戳 当项目从工作转移到交付时,项目交付也是如此 你有什么想法可以让我实现这样的目标吗?你可以这样试试 SET project_start = CASE W

我有一个问题,我需要在我的数据库中设置一个时间戳,如果用户按特定顺序更改某些设置,我将在下面为您提供更多详细信息

数据库:

当前查询:

PHP:

基本上只是一个选择/选项和输入字段。请注意,项目状态为选择/选项状态

问题是:

简言之,我希望当项目从收件箱移动到以项目状态工作时,项目开始更新为今天的时间戳

当项目从工作转移到交付时,项目交付也是如此


你有什么想法可以让我实现这样的目标吗?

你可以这样试试

 SET project_start = CASE
                     WHEN project_status = 'Inbox' THEN CURDATE()
                     ELSE project_start
                     END 
     project_delivery = CASE
                        WHEN project_status = 'Working' THEN CURDATE() 
                        ELSE project_delivery
                        END 
 WHERE   ....

您可以使用Case。。当表达。它将需要一些if..else在PHP级别和MySQL级别。嘿,Igor,谢谢你的回复!这个答案在一定程度上帮助了我,因为我现在可以在状态为“收件箱”或“正在工作”时更新项目启动和项目交付。然而我只希望当项目状态向上更改时,更新才真正发生。因此,当一个项目从收件箱移动到工作状态时,我希望更改为happend。因此,我认为我需要从SQL跟踪当前状态,并在这个项目编辑会话中跟踪最终更改的状态。然后根据这些数据,按照您的建议运行一些模拟案例查询。你还有什么想法吗?提前谢谢
$query = "

UPDATE projects

SET

project_name = '".$mysqli->real_escape_string($_POST['project_name'])."',

project_status = '".$mysqli->real_escape_string($_POST['project_status'])."',

project_start = '".$mysqli->real_escape_string($_POST['project_start'])."',

project_delivery = '".$mysqli->real_escape_string($_POST['project_delivery'])."'

WHERE

project_id = '".$mysqli->real_escape_string($_REQUEST['id'])."'

";
 SET project_start = CASE
                     WHEN project_status = 'Inbox' THEN CURDATE()
                     ELSE project_start
                     END 
     project_delivery = CASE
                        WHEN project_status = 'Working' THEN CURDATE() 
                        ELSE project_delivery
                        END 
 WHERE   ....