Martin S.: mysql UPDATE wird nur scheinbar durchgeführt

Beitrag lesen

In meinem aktuellen Projekt benutze ich eine Spalte mit int-Werten für eine Sortierung. Für die Funktionalität in der Oberfläche ist es notwendig, dass bei einem Verändern der Reihenfolge zwei Werte gegeneinander getauscht werden. Hierfür führe ich die folgenden Operationen durch:

$str_query  = "SELECT * FROM tbl_articledocument ";
$str_query .= "WHERE (tbl_articledocument.id = '".$id_targetdownload."')";
$sql_result = mysql_query($str_query);

$row1 = MYSQL_FETCH_ARRAY_R($sql_result);

$str_query  = "SELECT * FROM tbl_articledocument ";
$str_query .= "WHERE (tbl_articledocument.id = '".$id_download."')";
$sql_result = mysql_query($str_query);
$row2 = MYSQL_FETCH_ARRAY_R($sql_result);

$str_query = "UPDATE tbl_articledocument SET int_row = '".$row2[0]["int_row"]."', sql_dummy = NOW() WHERE tbl_articledocument.id = '".$row1[0]["id"]."'";
$sql_result = mysql_query($str_query);
if (mysql_affected_rows() > 0) {
  $str_query = "UPDATE tbl_articledocument SET int_row = '".$row1[0]["int_row"]."', sql_dummy = NOW() WHERE tbl_articledocument.id = '".$row2[0]["id"]."'";
  $sql_result = mysql_query($str_query);
  if (mysql_affected_rows() > 0) {
    header("Location:".URL."/pages/content_edit.php?sess_id=".$sess_id."");
}

Es wird effektiv ein Austausch der Werte für int_row durchgeführt. Alle SQL-Abfragen sind korrekt, enthalten die richtigen Werte und werden korrekt durchgeführt. Wenn ich nun in der Folgeseite

$str_query  = "SELECT * FROM tbl_articledocument ";

durchführe, wurde das Update nicht durchgeführt. Wenn ich jedoch die Werte in der vorherigen Seite mit dem selben Befehl abfrage, erhalte ich die upgedateten Werte. Ein LOCK/UNLOCK der tabellen brachte wenig Erfolg, genauso ein FLUSH vor der Abfrage.

Was kann noch Ursache für das "scheinbare" Update sein? Wenn ich mir den Timestamp von den betroffenen Zeilen ausgeben lasse, wurden diese jedoch korrekt geupdatet ?!