Mysql Sql更新一次就死了

Mysql Sql更新一次就死了,mysql,sql,Mysql,Sql,我想要一个sql查询,它只更新一次,然后就消失了 更新适用于一行(其中用户ID=x) 我想将其中一个用户关闭为打开(仅一个) 所以数据库是 user | monday | tuesday | wednesday | thurs | fri | sat | xmas | easter | etc 1 | off | hols | on | off | on | x | on | sick | etc mysql_query("UPDATE shi

我想要一个sql查询,它只更新一次,然后就消失了

更新适用于一行(其中用户ID=x)

我想将其中一个用户关闭为打开(仅一个)

所以数据库是

user | monday | tuesday | wednesday | thurs | fri | sat | xmas | easter | etc
1    | off     | hols   |   on      | off   | on  |  x  |  on   | sick  | etc

mysql_query("UPDATE shifts SET ??  WHERE userID  = '".$_SESSION['userID']."' ")or die("Query failed:".mysql_error());
因此列名是可变的,有100多个列

很明显,我不想把所有的off都改成on(我很乐意改变第一个或最后一个,只是不能超过一个。)
(更新是通过PHP进行的,我当前的解决方案是选择并创建一个OFF值数组,然后在UDATING之前在PHP中进行更改-但这需要额外的MYSQL查询…

只需使用
LIMIT
子句即可


updatetable SET column='value'其中condition='value'LIMIT 1

通常的方法只是建立查询字符串 伪代码

qry = "Update Table Set " + NameValuesDelimited + " Where ...."
NameValues只是一个“Column1=0”和“Column2=2”的列表,用分隔符插入逗号,给出sql可以理解的语句,例如

Update Table Set C1 = 0, c2 = 6, c9 = 8 Where KeyName = 44

根本不知道你想做什么。。。只把星期三改为休息,但不要管星期五/圣诞节?这个表的设计似乎需要规范化。基本上是的,更改其中一个off,让另一个在常规查询中变得非常困难。您最好从规范化表设计开始。但这不会将所有=off的值都更改为=ON吗?而且列是可变的,问题是我不知道我要更新的是哪一个,我一直在研究伪代码的想法,考虑到列的数量,以及我缺乏专业知识,我认为这是我以后可以看到的东西-阵列解决方案必须暂时支持