Консоль MySQL SSH правильно выполняет подзапрос, но mysqli возвращает ноль для столбца подзапроса - PullRequest
0 голосов
/ 01 июня 2018

Я не решаюсь опубликовать весь запрос, но, возможно, это необходимо для моих переменных.Короче говоря, десятый столбец является подзапросом и должен возвращать количество вхождений чего-либо в другой таблице.

SQLFiddle: http://sqlfiddle.com/#!9/3718e/2

Идентификатор пользователя 366 - это тестпроизводственный учет.Обычно это динамически связанная ? подготовленная переменная.Идентификатор пользователя 366 должен возвращать две строки.Девять столбцов не важны для этого вопроса, но 10-й (подзапрос) должен иметь число 1 и 0 в первой и второй строках соответственно.Это работает на SSH-соединении с MySQL.Тем не менее, PHP mysqli и даже PhpMyAdmin возвращают 0 и 0 соответственно.Я поставил «песочницу» на PHP, поэтому ошибка лежит в SQL, я верю.

Пример правильного вывода из SSH (9 столбцов перед игнорированием):

+--------+ | guests | +--------+ | 0 | | 1 | +--------+

mysqliвернет только нули. Другие столбцы не затрагиваются, и SSH / mysqli согласны и возвращаются правильно. Если требуется больше контекста, дайте мне знать.

Спасибо.


Screenshot from server

SELECT tickets.id, @formal_id:=schedule.id as 'formal_id', schedule.name, schedule.date, schedule.colour, @li_price:=schedule.livers_in_price as 'li', @lo_price:=schedule.livers_out_price as 'lo', @gu_price:=schedule.guests_price as 'gu', tickets.for_sale as 'for_sale', @guest:=( SELECT COUNT(*) FROM billing WHERE guest = 1 AND user_id = @user_id AND formal_id = @formal_id ) AS 'guests' FROM tickets JOIN user ON tickets.user_id = user.user_id JOIN schedule ON tickets.formal_id = schedule.id JOIN billing ON tickets.formal_id = billing.formal_id WHERE user.user_id = 366 AND schedule.date > NOW() GROUP BY tickets.id;

1 Ответ

0 голосов
/ 01 июня 2018

без указания источника таблицы для переменной, когда объединения находятся в игре, вы можете получить неожиданные результаты.Использование синтаксиса table.column избавит вас от многих неприятностей.

В этом случае AND user_id = tickets.user_id

, но я не могу объяснить противоречивые результаты между вашим тестированием и моим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...