2009-07-06 8 views
0

ich eine MySQL-Abfrage, die als (mit Zend_Db) geht folgendermaßen vor:abrufen letzte aktualisierte Spalte in mysql

$sql = $handle->quoteInto("UPDATE board SET rank=rank+1 WHERE post_id=?", $postid); 
$handle->query($sql); 

(Rang ist keine automatische Erhöhung PK). Ich möchte jetzt den Wert rank abrufen, ohne eine andere Abfrage vorzuformen. Ich habe versucht, $handle->lastInsertId();, aber es scheint nicht zu funktionieren, da ich nicht MySQL natürlich inkrementieren Methode (ich kann nicht - rank ist der Rang eines Beitrags. Ich entweder ++ oder - es.)

Gibt es eine Möglichkeit, eine weitere Abfrage durchzuführen? Eine Funktion, die den letzten geänderten Wert zurückgibt?

Antwort

2

Ich glaube nicht, dass dies möglich ist - Sie müssen nur eine SELECT tun.

+0

Ja, ich bin affraid so: 'Abfrage ("? SELECT FROM WHERE id = 'lastId'")' – shkschneider

0

Sie können die -Funktion verwenden, die von MySQL zur Verfügung gestellt wird, um einen Wert festzulegen und dann über die mysql_insert_id() C-Funktion verfügbar zu machen, auf die sich die $handle->lastInsertId(); bezieht.

Das Folgende ist eine aktualisierte Version des Code-Schnipsel mit den LAST_INSERT_ID Änderungen vorgenommen:

$sql = $handle->quoteInto("UPDATE board SET rank=LAST_INSERT_ID(rank+1) WHERE post_id=?", $postid); 
$handle->query($sql); 

Lassen Sie mich wissen, wenn Sie Fragen haben.

HTH,

-Dipin