MYSQL Определяемый пользователем @VARIABLE

Я кодирую веб-приложение php-angularjs и сейчас создаю систему ревизий с процедурой и триггерами при вставке / обновлении.

после входа мне нужно сделать:

$sql = 'SET @id_user := ' . (int)$_SESSION['user']['id_user'].';';

это работает хорошо, если я выберу его (возвращает идентификатор пользователя, как ожидалось)
но позже (через 1 минуту) после нескольких посещенных запросов и страниц, когда я обновляю таблицу клиентов, все хорошо, кроме переменной @user_id, которая равна нулю

Вопрос:
Есть ли способ, которым я могу установить var для моего полного сеанса, чтобы избежать повторения SET @var каждый раз, когда мне нужно регистрировать изменения?

(также нужно думать, что у меня несколько администраторов)

0

Решение

Пользовательские переменные привязаны к сеансу в MySQL. Таким образом, они существуют в контексте единой связи.

Пользовательские переменные зависят от сессии. То есть переменная пользователя
определенный одним клиентом не может быть просмотрен или использован другими клиентами. Все
переменные для данного сеанса клиента автоматически освобождаются, когда это
клиент выходит.

Если вы будете повторно использовать одно и то же соединение, то по определению переменные будут одинаковыми (то есть «общими»). Но если ваш запрос инициализирует разные соединения, вы не сможете получить доступ к переменным из одного сеанса в другом.

В заключение: пользовательские переменные никогда не предназначались для перехода между состояниями, это небезопасно и, на самом деле, является побочным эффектом полагаться на них даже в нескольких запросах в контексте одного сеанса. Они могут использоваться для «настройки» вашего запроса (скажем, связанных с перечислением проблем, поскольку последовательности отсутствуют в MySQL), но я бы не рекомендовал использовать их для передачи состояния.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]