2015-09-24 223 views
-1

我想要做的是更新具有相同id的多个mysql表。我搜索了很多解决方案,但找不到合适的解决方案。我有一个表,看看下面喜欢:使用php更新sql数据库

+----+--------+--------+--------------+----------+ 
| id | emp_id | job_id | basic_salary | stat | 
+----+--------+--------+--------------+----------+ 
| 62 | 186 |  30 |   8400 | Active | 
| 64 | 110 |  8 |  12542 | Inactive | 
| 65 | 110 |  5 |  12542 | Active | 
+----+--------+--------+--------------+----------+ 

所以我想更新其id = 64emp_id = 110Active这也应该emp_id 110Inactive更新其他行,如果他们是Active使得只有一条记录与emp id 110此表仍然active和其余inactive

请您好意的帮助。

+2

任何尝试尝试? – jitendrapurohit

+0

您可以尝试的一件事是将活动标识存储在布尔值中(如果您正在更改表格方案)。然后,您可以通过搜索员工ID和布尔值true来检查活动。 –

+0

感谢布兰登白我会尝试你的建议 –

回答

1

你可以这样做

// first find all the records for the employee with status as Active and make them Inactive. 
    $query1 = mysql_query("select * from table_employee where emp_id = 110 and status = 'Active' "); 
    if($query1 && mysql_num_rows($query1) > 0) 
    { 
     while(mysql_fetch_array($query1)) 
     { 
       mysql_query("update table_employee set status = 'Inactive' where emp_id = 110"); 
     } 
    } 

// then make the record Active that you you want to 
$query2 = mysql_query("update table_employee set status = 'Active' where emp_id = 110 and id = 64"); 
+0

非常感谢@Suyog。你的解决方案确实帮了很大忙。 –

+0

不用客气 – Suyog

1

可以尝试用这些简单的疑问: -

UPDATE <table_name> SET `stat` = "Active" WHERE id = 64 AND emp_id = 110 

然后:

你可以尝试
UPDATE <table_name> SET `stat` = "Inactive" WHERE id <> 64 AND emp_id = 110 
+0

我认为目的是针对特定的员工身份,以个人身份行事,但我可能是错的。 –

+0

我认为OP的意思是不同的:他希望将特定的emp设置为活动状态,然后AUTOMATICALL将其他设置为非活动状态。但可能会被误解(在问题本身的评论部分提出澄清问题)。 – Thomas

+0

同意,如果OP回复所需,我很乐意更新答案。但如果情况并非如此,并且可以通过发射尽可能多的查询来完成,这对R.Karki可能有用 - 也许OP对其有效 – jitendrapurohit

0

一件事是有效ID存储在一个布尔值(如果你改变表格方案)。然后,您可以通过搜索员工ID和布尔值true来检查活动。