2016-12-03 54 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