Задать вопрос
Terion
@Terion

Один и тот же MySQL запрос работает через PhpMyAdmin но не работает через скрипт?

Не понимаю. Есть вот такой запрос (нужно выбрать позицию игрока ± 2 позиции, лучше придумать не вышло).



$uid = 2;<br/>
 $rate_table = $this-&gt;db-&gt;query('SET @rank=0;<br/>
 CREATE TEMPORARY TABLE `rank_table` AS (<br/>
 SELECT @rank:=@rank+1 AS rank,`users`.*,IFNULL(SUM(`g`.`units`),0) as sum<br/>
 FROM `users`<br/>
 LEFT OUTER JOIN (SELECT * FROM `game_rounds` WHERE `game_rounds`.`final`=1) g ON `users`.`id`=`g`.`uid`<br/>
 GROUP BY `users`.`id`<br/>
 ORDER BY `sum` DESC<br/>
 );<br/>
 SET @user_rank = (SELECT `rank` FROM `rank_table` WHERE `id`='.$uid.');<br/>
 SELECT * FROM `rank_table` WHERE `rank`&lt;=@user_rank+2 AND `rank`&gt;=@user_rank-2')-&gt;result();




Когда прогоняю его через PhpMyAdmin — получаю вполне годный и правльный результат.

Когда кормлю его скрипту (в примере — через Codeigniter) — выбивает ошибку синтаксиса:



You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE TEMPORARY TABLE `rank_table` AS ( SELECT @rank:=@rank+1 AS rank,`users`' at line 2


При этом, он показывает, какой запрос отправил в базу, я его просто копирую, вставляю в PhpMyAdmin — и получаю результат.



Кормлю запрос через PDO->query() — возвращает пустой результат (т.е. в возвращаемом PDO объекте есть только сам запрос)



Я НИЧЕГО НЕ ПОНИМАЮ!

За помощь в долгу не останусь.

Спасибо
  • Вопрос задан
  • 4312 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
persona
@persona
Разбей запросы по; и выполняй их по отдельности. Мультизапросы могут не выполнятся в зависимости от настроек на отдельно взятом сервере.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
WebSpider
@WebSpider
Ещё есть такая штука как mysqli_multi_query, но не уверен, что её легко получится прикрутить с CodeIgniter'у
Ответ написан
Как отображается запрос в профайле xDebug?
Ответ написан
Ваш ответ на вопрос

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

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