2016-12-03 4 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() функцию или условное case выражение в пункте set в зависимости от значения поля сервера, чтобы решить, является ли по умолчанию должен быть установлен в 0 или 1.

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

Пара примечаний:

  1. Ваш код может быть уязвим для SQL-инъекций. Рассмотрим использование подготовленных операторов с параметрами.
  2. Если у вас есть числовые значения в поле, то не передавайте значения в виде строки. Mysql должен преобразовать значения в полете.
+0

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

+0

Достаточно честный. Как насчет основной части ответа? – Shadow

Смежные вопросы