Я искал ответы на этот вопрос, но ничего не нашел в Интернете.
У меня проблемы с запросом, который дает правильный результат при запуске из оболочки mysql на компьютере, но другой при запуске из mysqli в сценарии PHP.
Запрос:
SELECT q.pos, q.event_ID, e.name FROM (SELECT @row_number:=CASE WHEN @event_ID=e_ID THEN @row_number+1 ELSE 1 END AS pos, @event_ID:=e_ID as event_ID, u_ID from event_queue ORDER BY e_ID, dateadded) AS q INNER JOIN event AS e ON q.event_ID = ID WHERE q.u_ID=11;
Если это вызывается из mysqli, тогда я получаю неправильное значение позиции (q.pos), равное 1, при запуске из оболочки mysql я получаю правильное значение 4. Я думаю, это потому, что он использует переменную в коде mysql , но я не могу найти в Интернете ничего, что описывало бы эту проблему.
Может ли кто-нибудь указать мне правильное направление?
Спасибо.






Решение, которое сработало для меня, заключалось в том, чтобы просто удалить точку с запятой в конце первого запроса SQL.
Я имел:
mysqli_query($dbcon,"SET @row_number=0;");
Я изменил его на:
mysqli_query($dbcon,"SET @row_number=0");
и это сработало. Мне также нужно было установить переменную @event_ID в другом запросе mysqli.
Спасибо.
Мы ценим это, но для сообщества важнее, чтобы рабочие ответы были приняты, чтобы их было легче найти для следующего человека. Когда у вас будет достаточно репутации, вы сможете голосовать за ответы, которые помогут вам на вашем пути.
Ладно, я бы не смог добраться туда без помощи сообщества, поэтому мне немного неприятно принимать собственное решение.