2017-02-03 1 views
0

Ich habe drei Tabellen users_tbl, skill_tbl, user_skill_tbl woUpdate auf mehrere Tabellen Beziehung

users_tbl have 1 to many relations with user_skill_tbl(auto increment) 
and skill_tbl have 1 to many relations with the user_skill_tbl. 
user_skill_tbl have user_skill_id, skill_id and user_id. 

Ich habe kein Problem haben in den Daten in den Tabellen einfügen.

Ich habe ein Formular, wo Benutzer Detail und mehrere Kontrollkästchen Option der Fähigkeit (ich bekomme nur die skill_id) ist da.

Wenn das Von gefüllt ist, wird zuerst die Tabelle des Benutzers eingefügt, dann wird die letzte eingefügte ID genommen und der User_skill_tbl wird eingefügt. , aber mein Problem ist, wenn ich die user_skill_tbl aktualisieren muss ich

$skill = $_POST['skill_id']; 
for($i=0;$i < count($skill); i++){ 

$name[$i]= mysqli_escpae_string($con,$skill[$i]); 

$query = "update into user_skill_tbl (skill_id) 

values ('$skill_id') where user_id = '$user_id'" 

verwendet haben, nachdem die Abfrage die letzte ID des skill_id ausgeführt wird, auf dem ganzen skill_id im user_skill_tbl aktualisiert. Ich weiß, dass ich mit der user_skill_id manipulieren sollte, aber ich bin nicht in der Lage, es herauszufinden

Antwort

0

Ich denke, Sie vermischen das Update und fügen Syntax mit "Update in". Es ist "Aktualisieren Tabellenname" oder "In Tabellenname einfügen".

Ich bin nicht sicher, wie Sie Ihre Daten in user_skill_tbl speichern, aber wenn, wie ich denke, für jeden Benutzer Sie nur die Datensätze zu seinen Fähigkeiten speichern, müssen Sie zuerst alle Fähigkeiten für den aktuellen Benutzer löschen, so etwas wie:

$query = "delete from user_skill_tbl where user_id = '$user_id'" 

und dann jede Fertigkeit in Ihrer for-Schleife hinzu:

$query = "insert into user_skill_tbl (skill_id, user_id) values 
('$skill_id', '$user_id') 

Setzen Sie alles in einer Transaktion Inkonsistenzen zu vermeiden, wenn etwas während der Ausführung schief geht.

+0

Vielen Dank. Ich bin verwirrt, aber dann ist das Problem gelöst –