2014-02-21 30 views
2

我想用一个代码更新2行或更多行,这是我现在得到的。使用一个查询在MySQL中更新2列或更多列

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

在auth = '是' 是0出于某种原因,并authtime '$时间' 并没有从没有改变到1368135045

谁能帮助?

+0

它是2个或更多*表*或*行* ...!? –

+0

@Ravinder:这是两个_columns_。 – spencer7593

+2

['可爱...'](http://stackoverflow.com/q/60174/) –

回答

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]' 
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

试试这个,将工作肯定

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