Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Обединение UPDATE INSERT DELETE
Форумы портала PHP.SU » » Работа с СУБД » Обединение UPDATE INSERT DELETE

Страниц (3): [1] 2 3 »
 

1. f0rs1k - 02 Марта, 2015 - 18:25:32 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. mysql_query("DELETE FROM account_premiums  WHERE id = $ac_id");
  2. mysql_query("INSERT INTO account_premiums (id) VALUES ('$ac_id') ");
  3. mysql_query("UPDATE `account_premiums` SET `setdate` = NOW(), `unsetdate` = `setdate` + interval 1 day WHERE `id` = $ac_id");

Вот это я хочу обеде нить в 1 запрос.
Возможно ли это? и как пример
2. exlant - 02 Марта, 2015 - 18:44:36 - перейти к сообщению
а зачем делать INSERT, и потом сразу же его обновлять?
3. f0rs1k - 02 Марта, 2015 - 18:56:36 - перейти к сообщению
он почему то не хочет работать через инсер который упдата
4. exlant - 02 Марта, 2015 - 19:12:14 - перейти к сообщению
а что так не работает?
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. mysql_query("INSERT INTO account_premiums (id,setdate,unsetdate) VALUES ('$ac_id',NOW(),NOW() + interval 1 day ) ");
  4.  

а по поводу темы, то я уверен, что в вашей ситуации можно обойтись одним простым запросом
5. f0rs1k - 02 Марта, 2015 - 19:22:50 - перейти к сообщению
ох спасибо и я пока новичек в таких делах. у меня корявые запросы и ужасные запросы.
просто хотел сделать эти 3 запроса в 1 . но теперь благодаря вам нужно только 2 обеденить
6. exlant - 02 Марта, 2015 - 19:24:40 - перейти к сообщению
я думаю если вы объясните, что именно хотите, то возможно обойдемся и одним простым запросом!
7. f0rs1k - 02 Марта, 2015 - 19:29:33 - перейти к сообщению
Я хочу сделать чтоб при нажатии кнопочки давался премиум, но и снимало валюту.
но если не хватает валюты чтоб в базу не заливался запрос.
вот так выглядит весь запрос:
PHP:
скопировать код в буфер обмена
  1. $result1 = mysql_query("UPDATE cp_shards SET shard=shard -25 WHERE acid= $ac_id AND shard > 24");
  2. mysql_query("DELETE FROM account_premiums  WHERE id = $ac_id");
  3. mysql_query("INSERT INTO account_premiums (id,setdate,unsetdate) VALUES ('$ac_id',NOW(),NOW() + interval 1 day ) ");

а причина в том что валюта находится в другой таблице, то есть условия не могу сделать к другим запросам. точнее не могу понять как а условие такое что недостаточно валюты для запроса
(Добавление)
а отправляет запрос такой вот кнопкой
CODE (html):
скопировать код в буфер обмена
  1.   <form name="forma" action="index.php?p=100" method="post">
  2. <font color="#ff3333">* </font><font size=4 color="#DCDCDC">Премиум на:</font>
  3. <select name="id" CLASS="styled-select" >
  4. <option  value="<? echo "$datag[id]" ?>">1 день</option>
  5. <option  value="<? echo "$datag[id]" ?>">Неделю</option>
  6. <option  value="<? echo "$datag[id]" ?>">Месяц</option>
  7. <input name="submit" type="submit" value="Взять премиум">
  8. </form>
8. exlant - 02 Марта, 2015 - 19:56:16 - перейти к сообщению
если я правильно понял
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. mysql_query("INSERT INTO account_premiums (id,setdate,unsetdate) VALUES ('$ac_id',NOW(),NOW() + interval 1 day )  WHERE cp_shards.shard >= 25 AND cp_shards.acid= $ac_id ON DUPLICATE KEY UPDATE setdate=NOW(), unsetdate=NOW() + interval 1 day");
  4. //если в таблице с деньгами все в порядке добавляем пользователя в аккаунт премиумс, если он там уже существовал обновляем его строчку
  5. if(mysql_affected_rows()>0) // если пользователь был добавлен в аккаунт премиумс, отнимаем у него деньги
  6. $result1 = mysql_query("UPDATE cp_shards SET shard=shard -25 WHERE acid= $ac_id AND shard > 24");
  7.  


так стоп я походу бред написал...
сейчас перепишу, а это не должно работать
9. f0rs1k - 02 Марта, 2015 - 20:03:47 - перейти к сообщению
да не работает
10. exlant - 02 Марта, 2015 - 20:10:00 - перейти к сообщению
а вот так по идее должно работать

PHP:
скопировать код в буфер обмена
  1. $result1 = mysql_query("UPDATE cp_shards SET shard=shard -25 WHERE acid= $ac_id AND shard >= 25");
  2. //проверяем или хватает денег у юзера
  3.  
  4. mysql_query("INSERT INTO account_premiums (id,setdate,unsetdate) VALUES ('$ac_id',NOW(),NOW() + interval 1 day )  ON DUPLICATE KEY UPDATE setdate=NOW(), unsetdate=NOW() + interval 1 day");
  5. //если в таблице с деньгами все в порядке добавляем пользователя в аккаунт премиумс, если он там уже существовал обновляем его строчку
  6. }
11. f0rs1k - 02 Марта, 2015 - 20:14:17 - перейти к сообщению
Работает как задумано, но есть 1 но дублирует в базе.
12. exlant - 02 Марта, 2015 - 20:23:28 - перейти к сообщению
f0rs1k пишет:
Работает как задумано, но есть 1 но дублирует в базе.


id как PRIMARY KEY нужно выставить в базе данных
13. f0rs1k - 02 Марта, 2015 - 20:28:41 - перейти к сообщению
все ревно почему то дублирует, в самой базе одинаковый id не могу создать а вот через запрос почемуто дублирует
(Добавление)
да и на setdate тоже почемуто стоит PRIMARY KEY
14. exlant - 02 Марта, 2015 - 20:35:33 - перейти к сообщению
насколько я знаю только один PRIMARY KEY может быть...
15. f0rs1k - 02 Марта, 2015 - 20:37:26 - перейти к сообщению
я убрал и всё вроде заработало. не дублирует а можно чтобы выдавало в пхп допусти не достаточно средств на счете?

 

Powered by ExBB FM 1.0 RC1