2016-12-03 80 views
0

什麼是合併兩個mysqli的查詢的作爲一個查詢的最佳方式在一個查詢中執行多個MySQL更新

表SERVER_JOINS

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

只有一個行必須有默認爲1 通過點擊一個鏈接我想改變默認值

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

您不需要運行第一個查詢,因爲第二個查詢會執行相同的操作。 – piotr

+0

我有多行。只有一行的默認值爲1. – hans

回答

0

我想你想schieve類似的東西:

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

使用一個if()功能或根據服務器字段的值的set子句中條件表達式case決定缺省值是否是要被設置爲0或1。

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

夫婦的說明:

  1. 您的代碼可能容易受到sql注入攻擊。考慮使用帶有參數的預準備語句。
  2. 如果在字段中有數字值,則不要將值作爲字符串傳遞。 Mysql必須轉換航班上的值。
+0

我使用$ id = mysqli_real_escape_string($ conn,(int)$ _ GET ['default_server']); – hans

+0

夠公平的。答案的主要部分是什麼? – Shadow