2017-08-04 1 views
1

Ich habe eine Datenbanktabelle, die ich ein Feld basierend auf einem anderen ändern muss. Es gibt zwei Datensätze für jede ID "option_id". Jeder hat eine sort_order.Modify MySQL Feld basierend auf einem anderen mit PHP

So for example: 
12345, 1 
12345, 2 

Ich brauche alle Datensätze finden zu können, die die gleiche ID haben und eine solche für die sort_order 1 und eine für sort_order 2. Dann muss ich die sort_order von 1 auf 0 geändert werden, und die sort_order von 2 zu 1. Ich würde gerne PHP verwenden, um dies zu tun ist möglich.

+0

Verfügt die Zeile über ein ID-Feld, um eine bestimmte Zeile zu identifizieren, unabhängig von 'option_id' und' sort_order'? – Progman

+0

Ereignisse für den Fall, dass Sie die Doktrin zum Beispiel verwenden – Vladislav

+0

Nein, kein ID-Feld außer der Option_ID, die jeweils zwei Datensätze enthält. –

Antwort

1

Angenommen, Sie können die Verbindungszeichenfolgen selbst verarbeiten (ich nehme hier PDO an). Fast genau so musste ich den Nummernwechsel machen.

Gehen Sie dann wie folgt vor:

$sql = "SELECT * FROM table_name WHERE sort_order = 2"; 
    while($row = $results->fetch(PDO::FETCH_ASSOC)){ 

     $sql_1 = "UPDATE table set sort_order = 0 WHERE sort_order = 1 AND option_type_id = " . $row['option_id']; //then execute query 
     $sql_2 = "UPDATE table set sort_order = 1 WHERE sort_order = 2 AND option_type_id = " . $row['option_id']; //then execute query. 
    } 

Die Logik ist, dass Sie den passenden Datensatz finden, ändern Sie die 1 auf 0, dann die 2 ändern 1. das Gegenteil tun würde wirklich die Aufzeichnungen vermasseln.

+0

* Hinweis: Ich habe die tatsächlichen Abfrageausführungen weggelassen. Ich dachte, du kannst mit diesem Teil umgehen. – Difster

+0

Danke! Das hat mich dahin gebracht, wo ich hingehen muss. –

Verwandte Themen