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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Обединение UPDATE INSERT DELETE

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
f0rs1k
Отправлено: 02 Марта, 2015 - 18:25:32
Post Id


Новичок


Покинул форум
Сообщений всего: 26
Дата рег-ции: Февр. 2015  


Помог: 0 раз(а)




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 запрос.
Возможно ли это? и как пример
 
 Top
exlant
Отправлено: 02 Марта, 2015 - 18:44:36
Post Id



Посетитель


Покинул форум
Сообщений всего: 425
Дата рег-ции: Февр. 2015  


Помог: 14 раз(а)




а зачем делать INSERT, и потом сразу же его обновлять?
 
 Top
f0rs1k
Отправлено: 02 Марта, 2015 - 18:56:36
Post Id


Новичок


Покинул форум
Сообщений всего: 26
Дата рег-ции: Февр. 2015  


Помог: 0 раз(а)




он почему то не хочет работать через инсер который упдата
 
 Top
exlant
Отправлено: 02 Марта, 2015 - 19:12:14
Post Id



Посетитель


Покинул форум
Сообщений всего: 425
Дата рег-ции: Февр. 2015  


Помог: 14 раз(а)




а что так не работает?
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. mysql_query("INSERT INTO account_premiums (id,setdate,unsetdate) VALUES ('$ac_id',NOW(),NOW() + interval 1 day ) ");
  4.  

а по поводу темы, то я уверен, что в вашей ситуации можно обойтись одним простым запросом

(Отредактировано автором: 02 Марта, 2015 - 19:12:40)

 
 Top
f0rs1k
Отправлено: 02 Марта, 2015 - 19:22:50
Post Id


Новичок


Покинул форум
Сообщений всего: 26
Дата рег-ции: Февр. 2015  


Помог: 0 раз(а)




ох спасибо и я пока новичек в таких делах. у меня корявые запросы и ужасные запросы.
просто хотел сделать эти 3 запроса в 1 . но теперь благодаря вам нужно только 2 обеденить
 
 Top
exlant
Отправлено: 02 Марта, 2015 - 19:24:40
Post Id



Посетитель


Покинул форум
Сообщений всего: 425
Дата рег-ции: Февр. 2015  


Помог: 14 раз(а)




я думаю если вы объясните, что именно хотите, то возможно обойдемся и одним простым запросом!
 
 Top
f0rs1k
Отправлено: 02 Марта, 2015 - 19:29:33
Post Id


Новичок


Покинул форум
Сообщений всего: 26
Дата рег-ции: Февр. 2015  


Помог: 0 раз(а)




Я хочу сделать чтоб при нажатии кнопочки давался премиум, но и снимало валюту.
но если не хватает валюты чтоб в базу не заливался запрос.
вот так выглядит весь запрос:
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>

(Отредактировано автором: 02 Марта, 2015 - 19:42:26)

 
 Top
exlant
Отправлено: 02 Марта, 2015 - 19:56:16
Post Id



Посетитель


Покинул форум
Сообщений всего: 425
Дата рег-ции: Февр. 2015  


Помог: 14 раз(а)




если я правильно понял
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.  


так стоп я походу бред написал...
сейчас перепишу, а это не должно работать

(Отредактировано автором: 02 Марта, 2015 - 20:00:21)

 
 Top
f0rs1k
Отправлено: 02 Марта, 2015 - 20:03:47
Post Id


Новичок


Покинул форум
Сообщений всего: 26
Дата рег-ции: Февр. 2015  


Помог: 0 раз(а)




да не работает

(Отредактировано автором: 02 Марта, 2015 - 20:04:08)

 
 Top
exlant
Отправлено: 02 Марта, 2015 - 20:10:00
Post Id



Посетитель


Покинул форум
Сообщений всего: 425
Дата рег-ции: Февр. 2015  


Помог: 14 раз(а)




а вот так по идее должно работать

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. }
 
 Top
f0rs1k
Отправлено: 02 Марта, 2015 - 20:14:17
Post Id


Новичок


Покинул форум
Сообщений всего: 26
Дата рег-ции: Февр. 2015  


Помог: 0 раз(а)




Работает как задумано, но есть 1 но дублирует в базе.
 
 Top
exlant
Отправлено: 02 Марта, 2015 - 20:23:28
Post Id



Посетитель


Покинул форум
Сообщений всего: 425
Дата рег-ции: Февр. 2015  


Помог: 14 раз(а)




f0rs1k пишет:
Работает как задумано, но есть 1 но дублирует в базе.


id как PRIMARY KEY нужно выставить в базе данных
 
 Top
f0rs1k
Отправлено: 02 Марта, 2015 - 20:28:41
Post Id


Новичок


Покинул форум
Сообщений всего: 26
Дата рег-ции: Февр. 2015  


Помог: 0 раз(а)




все ревно почему то дублирует, в самой базе одинаковый id не могу создать а вот через запрос почемуто дублирует
(Добавление)
да и на setdate тоже почемуто стоит PRIMARY KEY

(Отредактировано автором: 02 Марта, 2015 - 20:30:06)

 
 Top
exlant
Отправлено: 02 Марта, 2015 - 20:35:33
Post Id



Посетитель


Покинул форум
Сообщений всего: 425
Дата рег-ции: Февр. 2015  


Помог: 14 раз(а)




насколько я знаю только один PRIMARY KEY может быть...
 
 Top
f0rs1k
Отправлено: 02 Марта, 2015 - 20:37:26
Post Id


Новичок


Покинул форум
Сообщений всего: 26
Дата рег-ции: Февр. 2015  


Помог: 0 раз(а)




я убрал и всё вроде заработало. не дублирует а можно чтобы выдавало в пхп допусти не достаточно средств на счете?
 
 Top
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB