2016-07-22 14 views
0

Hier ist meine Frage:Warum ist die Anzahl der betroffenen Zeilen falsch?

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 

Das Ergebnis der Abfrage oben ist dies:

+----------+--------+ 
| password | active | 
+----------+--------+ 
| mypass | 1  | 
+----------+--------+ 

Hinweis:token Spalte ist einzigartig, so dass immer das Ergebnis eine Reihe ist (oder Nullreihe).


Jetzt habe ich konvertieren, dass select Anweisung zu einer update Anweisung wie folgt:

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 

Und dann das Ergebnis wird so sein:

+-----------+--------+ 
| password | active | 
+-----------+--------+ 
| mynewpass | 0  | 
+-----------+--------+ 

Ok gut, alle fein. nur ich weiß nicht, warum die Anzahl der betroffenen Zeilen 2 ist? Wie Sie sehen, gibt es nur eine Zeile und ich habe zwei Spalten einer Zeile aktualisiert, also warum die Zeile betroffen ist 2?

echo $stm->rowCount(); // 2 

Sollte es nicht 1 sein?

+3

Sie aktualisieren 2 Zeilen jeweils in den Tabellen 'user' und' resend_pass'. –

Antwort

7
SET u.password = 'mynewpass', 
    r.active = 0 

das ist 2 Reihen in jeder Tabelle aliased von u und r.

+0

Ah ich sehe thx .. +1 .. * (aber 5 Upvotes ist viel für diese Antwort, viel Spaß) * – stack

+0

@stack Ich poste hier nicht Punkte zu verdienen ... wenn es einen Weg gäbe würde ich alle meine Punkte übertragen und Abzeichen für dich. Prost. – objectNotFound

+0

Wow .. das ist nett von dir. ':-)' – stack

Verwandte Themen