这是我的问题:
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
吗?
答案 0 :(得分:7)
SET u.password = 'mynewpass',
r.active = 0
每个表中的2行一行别名由u和r。
组成