Перейти к содержимому


$line и sql-запрос


Сообщений в теме: 2

#1 arsenal

    Активный участник

  • Пользователи
  • PipPipPip
  • 448 сообщений

Отправлено 18 Январь 2012 - 02:16

Версия 195, ревизия 3232 от 13.01.12.
Заметил такую особенность.
В подчиненной таблице есть вычисление, которое срабатывает при сохранении таблицы. В нем через переменую $line я меняю значения одного из полей (текстовое поле) текущей строки. Далее применяю sql-запрос для выбора группы строк с определенными параметрами. В эту группу входит и текущая строка. Так вот если брать значение этого поля для текущей строки из sql-запроса, то значение будет предыдущим, хотя я его через переменную $line уже поменял.
Если значение поля менять через update_query, то sql-запрос сразу видит уже новое значение
1. так и должно быть?
2. Если sql-запрос берет строки из базы, то получается что $line['XXX']=ЗНАЧЕНИЕ меняет поле не в базе, а где-то в промежуточном месте, а уже потом это переносится в базу. Если это так, тогда в какой момент значение в базе реально меняется?
3. В любом случае это как-то не логично.

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 18 Январь 2012 - 09:26

Разумеется, так и должно быть. Что здесь нелогичного то? $line - это всего лишь переменная, значение переменной никак не может влиять на значения полей в БД, пока ее значение явно не будет туда переписано. В данном случае это делает движок программы после исполнения кода вычисления. Если у вас в самом вычислении нет записи данных в БД, то как раз таки нелогично думать что данные как-то сами собой запишутся туда при изменении значения переменной. При этом, в отличии от записи в $line, функция update_query непосредственно записывает данные в БД.

#3 arsenal

    Активный участник

  • Пользователи
  • PipPipPip
  • 448 сообщений

Отправлено 18 Январь 2012 - 14:35

Просмотр сообщенияРазработчик (18 Январь 2012 - 09:26) писал:

При этом, в отличии от записи в $line, функция update_query непосредственно записывает данные в БД.
Понятно, спасибо.





Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных