Mysql — замена переменной подготовленного оператора с помощью подзапроса

Следующий запрос отлично работает на MySql версии 5.7.25 и возвращает столбцы «a», «b», «c» и «days». Но в версии 5.1.73 он все еще работает, но возвращает только 1 столбец - «дни».

PREPARE stmt1 FROM '
SELECT
  results.*
FROM
(
  SELECT
    ? AS a,
    ? AS b,
    ? AS c,
    DATEDIFF(?, ?) AS days
) AS results
';

SET @a = '2018-09-04';
SET @b = '2018-10-04';
SET @c = 'TESTTESTTEST';
EXECUTE stmt1 USING @a, @b, @c, @b, @a;

Кто-нибудь знает, как я могу вернуть все столбцы в версии 5.1.73?

ОБНОВЛЕНИЕ - временное исправление, пока мы не сможем обновить:

SELECT
    IFNULL(?,"") AS a,
    IFNULL(?,"") AS b,
    IFNULL(?,"") AS c,
...

кажется, работает так, как ожидалось.

Это кажется глючным; 5.1.17 внесены некоторые изменения в подготовленные операторы (например, использование кеша запросов). На какой именно версии вы находитесь?

Lightness Races in Orbit 22.02.2019 15:01

Просто чтобы подтвердить это нормально в 8.0 - здесь это никому не поможет, но эй

Lightness Races in Orbit 22.02.2019 15:02

В любом случае, на самом деле, если этот является является ошибкой, единственным вариантом будет обновление, но мы должны найти версию 5.1, в которой она работает...

Lightness Races in Orbit 22.02.2019 15:05

Да, мне кажется, что это баг. Очень нужно обновить!

Buchow_PHP 22.02.2019 16:25
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
4
61
0

Другие вопросы по теме