@del993788

Почему из php не выполняется sql запрос из php?

Здравствуйте. Я так понимаю, дело в каких-то кавычках, но как эту проблему исправить - я не знаю.
Вот такой у меня php код:
$link = db_connect();
$query = "set @today:=date('2016-12-11');
update main M
  join (
   select cid, nomer
     from (
       select A.nomer,
              @cstart:=if(@cnum=A.nomer,@cstart,A.start),
              @cnum:=A.nomer,
              @cid:=(select M.id
                       from main M,allnomer MT
                      where MT.nomer=M.numbernomer and MT.type='lux'
                        and M.datestart>@cstart
                        and find_in_set(M.id,@used)=0
                      order by datestart
                      limit 1
                    ) cid,
              @cstart:=(select dateend from main where id=@cid) dend,
              @used:=coalesce(concat(@used,',',@cid),@used)
         from (
          select A.nomer, A.start
            from (
              select A.nomer,
                     (select coalesce(min(dateend),@today-interval 1 day)
                        from main M
                       where datestart<=@today and M.numbernomer=A.nomer) start
                from allnomer A where type='lux'
            ) A,
            main M, allnomer MT
           where MT.nomer=M.numbernomer and MT.type='lux' and M.datestart>A.start
           order by A.start desc, A.nomer
         ) A,
         (select @cid:=0,@cnum:=0,@cstart:=NULL,@used:='') Y
     ) X where cid is not null
  ) U
  on M.id=U.cid
 set M.numbernomer=U.nomer";

$result = mysqli_query($link, $query);
var_dump($result);


Мне возвращается bool(false) и в бд никаких изменений не происходит. Если я запущу этот же запрос через phpmyadmin, то всё сработает и запрос выполнится. Здесь явно дело в кавычках, ибо обычный SELECT без проблем работает. Подскажите, как выполнить такой большой sql запрос из php?
  • Вопрос задан
  • 408 просмотров
Решения вопроса 1
В mysqli_query нельзя засовывать несколько запросов. Если это сделать, то выполнится только первый, в вашем случае - "set @today:=date('2016-12-11')"
Если нужно выполнить несколько запросов, то тогда
* либо разбейте их на отдельные запросы и каждый по-отдельности засовывайте в mysqli_query
* либо используйте mysqli_multi_query
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы