这是我的查询:
SELECT u.password, r.active
FROM users u
INNER JOIN resend_pass r
ON u.id = r.user_id
WHERE r.token = 'mytoken' AND r.active = 1
上面查询的结果是这样的:
+----------+--------+
| password | active |
+----------+--------+
| mypass | 1 |
+----------+--------+
注意:
token
列是唯一的,因此结果始终是一行(或零行)。现在,我将该
select
语句转换为update
语句,如下所示:UPDATE users u
INNER JOIN resend_pass r
ON u.id = r.user_id
SET u.password = 'mynewpass',
r.active = 0
WHERE r.token = 'mytoken' AND
r.active = 1
然后结果将是这样的:
+-----------+--------+
| password | active |
+-----------+--------+
| mynewpass | 0 |
+-----------+--------+
好吧,一切都很好。只是我不知道为什么受影响的行数是
2
?如您所见,只有一行,并且我已经更新了一行的两列,那么为什么受影响的行是2
?echo $stm->rowCount(); // 2
不应该是
1
吗? 最佳答案
SET u.password = 'mynewpass',
r.active = 0
多数民众赞成2行在每个表中以u和r为别名。
关于php - 为什么受影响的行数是错误的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38531925/