Я пытаюсь выполнить запрос, который создает сводную таблицу.Запрос выполняется нормально вне PHP, но я получаю ошибки в PHP с mysqli->prepare()
Sql error #: 1064 - у вас ошибка в синтаксисе SQL;обратитесь к руководству, соответствующему вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с 'SET @sql = CONCAT ...
Если (надеюсь) не вдаваться в подробности запроса, есть ли что-тоо присвоении значений переменным (например, SET @sql
), которым нужен альтернативный синтаксис для работы с mysqli
?Если я уберу все с SET @sql
вниз, он больше не захлебнется prepare
.
$q = "SELECT GROUP_CONCAT(DISTINCT
CONCAT('MAX(CASE WHEN `date` = ''', `date`,
''' THEN `close` END) `', `date`, '`')
ORDER BY YEAR(`date`), MONTH(`date`)
)
INTO @sql
FROM
(SELECT symbol, `date`, `close`
FROM history where `date` IN
(SELECT MAX(`date`) as max_date
FROM history
WHERE date BETWEEN '1998-01-01' AND '2018-12-31' AND symbol = 'QQQ'
GROUP BY YEAR(`date`) )
) a;
SET @sql = CONCAT('SELECT symbol, ', @sql, '
FROM history
GROUP BY symbol');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;";
$stmt = $this->mysqli->prepare($q);
$stmt->execute();