使用一个查询在MySQL中更新2个或更多列

时间:2014-02-21 16:28:28

标签: php mysql sql

我正在尝试使用一个代码在我的MySQL上更新2行或更多行,这就是我现在所拥有的。

mysql_query("UPDATE users SET auth='yes' AND authtime='$time' WHERE username='$_GET[username]'"); 

auth ='yes'因某种原因为0而且authtime'$ time'没有从no更改为1368135045

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:1)

要更改多个列的值,请在列分配之间使用逗号分隔符,如下所示:

UPDATE mytab SET col1 = val , col2 = val WHERE ...
                            ^
                            +----- comma here

您的查询是有效的语法,并且它正在成功执行。 但您的查询形式为:

UPDATE users SET auth = (expression) WHERE username='$_GET[username]'

问题是查询中有一个AND关键字,您想要一个逗号分隔符。

正在发生的事情是MySQL正在读取AND作为分配给列auth的表达式的一部分。 MySQL正在评估这个表达式:

'yes' AND authtime='$time'

MySQL正在评估它作为布尔表达式,并获取布尔表达式的结果(为FALSE),并将该结果分配给列auth。 (这是你的陈述赋予值的唯一一栏。)

答案 1 :(得分:1)

试试这个,肯定会有效

UPDATE users SET auth='yes' ,  authtime='$time' WHERE username='$_GET[username]'

答案 2 :(得分:0)

UPDATE中存在语法错误。

更改:

UPDATE users SET auth='yes' AND authtime='$time' WHERE username='$_GET[username]'  

致:

UPDATE users SET auth='yes', authtime='$time' WHERE username='$_GET[username]'