Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> подготовленные запросы 
V
    Опции темы
alligator
Дата 17.6.2015, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 28.1.2004

Репутация: нет
Всего: 1



Всем привет, имеется вопрос по поводу примера как сделать средствами php выполнение следующего запроса:
в консоли mysql запрос выполняется без проблем.
Код

SET @query=NULL;
SET @columns=NULL;

SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT( 'MAX(IF(t.name = ''', name, ''', a.data, NULL)) AS ','\'', t.name,'\'' )
  ) INTO @columns
FROM `Archive` as a
INNER JOIN type t on t.uid=a.type_uid
WHERE date_uid=2;


SET @query=CONCAT('SELECT b.name, b.regnum, ',@columns,'
FROM `Archive` a 
INNER JOIN banks b on b.uid=a.bank_uid
INNER JOIN type  t on t.uid=a.type_uid
WHERE date_uid=2 and currency_uid=1 GROUP BY bank_uid ORDER BY b.regnum');

PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;


Раньше в php работал только с однострочными запросами, может кто нибудь подкинет примерчик как реализовывается выполнение?

PM MAIL   Вверх
alligator
Дата 18.6.2015, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 28.1.2004

Репутация: нет
Всего: 1



Вопрос снят, сделал так:
Если кто нибудь предложит более изящное решение буду рад =)
Код

$mysqli->query('SET @query=NULL;');
$mysqli->query('SET @columns=NULL;');
$mysqli->query("SELECT  GROUP_CONCAT(DISTINCT  CONCAT( 'MAX(IF(t.name = ''', name,  ''', a.data, NULL)) AS ', '\'', t.name,'\'' )  ) INTO @columns FROM `Archive` as a INNER JOIN type t on t.uid=a.type_uid WHERE date_uid=2;");

$query2 ="SET @query=CONCAT('SELECT b.name, b.regnum, ',@columns,'
FROM `Archive` a 
INNER JOIN banks b on b.uid=a.bank_uid
INNER JOIN type  t on t.uid=a.type_uid
WHERE date_uid=2 and currency_uid=1 GROUP BY bank_uid ORDER BY b.regnum');";

$mysqli->query($query2);

$mysqli->query('PREPARE stmt FROM @query;');
$r = $mysqli->query('EXECUTE stmt;');
//var_dump($r);
    while($row=$r->fetch_assoc()){
        $rows[]=$row;
    }
var_dump($rows);
$mysqli->query('DEALLOCATE PREPARE stmt;');

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0720 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.