2016-12-03 2 views
0

Execute Was ist der beste Weg, um zwei Mysqli Abfrage als eine Abfragemehrere Mysql-Updates in einer Abfrage

TABLE SERVER_JOINS

ID DEFAULT SERVER_ID  MEMBER_ID 
--------------------------------------- 
1  0   1    57 
2  0   52   57 
3  0   22   57 
4  1   35   57 

nur eine Zeile Standard als 1 haben muss: Durch Klicken auf einen Link fusionieren ich möchte den Standardwert ändern

mysqli_query($database->connection,"UPDATE `server_joins` SET 
`default` = '0' WHERE `default` = '1' AND `member_id` = '$session->u_id'"); 

mysqli_query($database->connection,"UPDATE `server_joins` SET 
`default` = '1' WHERE `server_id`= '$id' AND `member_id` = '$session->u_id'"); 
+0

Sie müssen nicht die erste Abfrage ausführen, denn die zweite wird das gleiche tun. – piotr

+0

Ich habe mehrere Zeilen. Nur eine Zeile muss einen Standardwert von 1 haben. – hans

Antwort

0

ich glaube, Sie, so etwas Schieve wollen:

mysqli_query($database->connection,"UPDATE `server_joins` 
SET `default` = '1' 
WHERE `default`= '0' AND `server_id`= '$id' AND `member_id` = '$session->u_id'"); 
0

Verwenden Sie eine if() Funktion oder einen bedingten case Ausdruck in der Klausel set auf dem Wert des Server-Feldes abhängig zu entscheiden, ob standardmäßig auf 0 oder 1.

UPDATE `server_joins` 
SET `default` = if(`server_id`= $id, 1, 0) 
WHERE `member_id` = $session->u_id 

Paare von Noten gesetzt werden soll:

  1. Ihr Code ist wahrscheinlich anfällig für sql injection attack. Erwägen Sie, vorbereitete Anweisungen mit Parametern zu verwenden.
  2. Wenn Sie numerische Werte in einem Feld haben, übergeben Sie die Werte nicht als Zeichenfolge. Mysql muss die Werte auf dem Flug konvertieren.
+0

ich benutze $ id = mysqli_real_escape_string ($ conn, (int) $ _ GET ['default_server']); – hans

+0

Fair genug. Was ist mit dem Hauptteil der Antwort? – Shadow

Verwandte Themen