Прямой запрос к базе Mysql

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Lyryks
Сообщения: 6
Зарегистрирован: Чт апр 02, 2020 10:03 am
Благодарил (а): 2 раза
Поблагодарили: 0

Прямой запрос к базе Mysql

Сообщение Lyryks » Пн сен 14, 2020 9:33 pm

Добрый день.
Прошу помощи, не могу разобраться.
Необходимо на сцену вывести значение из db_terminal.test
Просто пример, в таблице test есть две колонки:
id = 1
name = Вася

Нашел эту статью https://kb.mjdm.ru/funkcii-raboti-s-baz ... majordomo/
В данной статье написано что "В систему встроено несколько функций для работы непосредственно с базой данных. Эти функции доступны как из исходного кода системы, так и из любого метода или сценария..."
Попробовал из того что есть, а дальше как не понимаю
$result = SQLSelect('SELECT * FROM test WHERE id="1"');

Можно ли вообще нормально с этим механизмом работать или лучше не стоит?
Jilber
Сообщения: 682
Зарегистрирован: Ср май 03, 2017 7:41 pm
Благодарил (а): 111 раз
Поблагодарили: 107 раз

Re: Прямой запрос к базе Mysql

Сообщение Jilber » Пн сен 14, 2020 9:40 pm

А дальше что-то вроде "sg('Объект.Свойство', $result);"
И вывести свойство на сцену.
Lyryks
Сообщения: 6
Зарегистрирован: Чт апр 02, 2020 10:03 am
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Прямой запрос к базе Mysql

Сообщение Lyryks » Пн сен 14, 2020 10:49 pm

Не совсем понял, прошу прощения.
Слева на панели Объекты - Создать новый класс. Создал новый объект и привязал к этому классу.
Открываю этот объект и сверху меню (Основное, Свойства, Методы, Объеты, Шаблон отображения)
Нижнее меню (Детали, Свойства, Методы)
И куда вставлять этот код я уже запутался. В методы - там есть поле код

На сцене создал Информер, выбрал объект и свойство, и ничего не происходит
Jilber
Сообщения: 682
Зарегистрирован: Ср май 03, 2017 7:41 pm
Благодарил (а): 111 раз
Поблагодарили: 107 раз

Re: Прямой запрос к базе Mysql

Сообщение Jilber » Пн сен 14, 2020 10:52 pm

Если вручную запустить метод, в который вы вставили этот код, в выбранном свойстве объекта и в информере на сцене результат появляется ? Скрин можно ?
Lyryks
Сообщения: 6
Зарегистрирован: Чт апр 02, 2020 10:03 am
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Прямой запрос к базе Mysql

Сообщение Lyryks » Пн сен 14, 2020 11:01 pm

Нет, результат не появляется.
Я понимаю что делаю что то не то, и похоже путаюсь в свойствах и методах для классов и объектов.
И правильно ли что информер?
Jilber
Сообщения: 682
Зарегистрирован: Ср май 03, 2017 7:41 pm
Благодарил (а): 111 раз
Поблагодарили: 107 раз

Re: Прямой запрос к базе Mysql

Сообщение Jilber » Пн сен 14, 2020 11:15 pm

Lyryks писал(а):
Пн сен 14, 2020 10:49 pm
Открываю этот объект и сверху меню (Основное, Свойства, Методы, Объеты, Шаблон отображения)
Это относится ко всему классу.
Lyryks писал(а):
Пн сен 14, 2020 10:49 pm
Нижнее меню (Детали, Свойства, Методы)
А это уже свойства и методы конкретного объекта, открытого в данный момент.
В нижнем меню нажать на "Методы" и в открывшемся окне создать какой-то свой метод. В его код вставить:

Код: Выделить всё

$result = SQLSelect('SELECT * FROM test WHERE id="1"');
sg('Объект.Свойство', $result);
Разумеется в строке "sg('Объект.Свойство', $result);" 'Объект.Свойство' надо заменить на свои. После этого запустить этот метод вручную. В свойстве должен появиться результат.
Lyryks писал(а):
Пн сен 14, 2020 11:01 pm
И правильно ли что информер?
В данном случае дело не в информере, результат должен появиться в свойстве объекта, а оттуда его уже можно будет вывести куда угодно.
За это сообщение автора Jilber поблагодарил:
Lyryks (Вт сен 15, 2020 6:34 am)
Рейтинг: 1.16%
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Прямой запрос к базе Mysql

Сообщение fandaymon » Пн сен 14, 2020 11:26 pm

Jilber писал(а):
Пн сен 14, 2020 11:15 pm

Код: Выделить всё

$result = SQLSelect('SELECT * FROM test WHERE id="1"');
sg('Объект.Свойство', $result);
Так делать не надо. В $result после селекта будет содержатся массив. Присваивать свойству массив не самая хорошая идея

Код: Выделить всё

$result = SQLSelectOne('SELECT * FROM test WHERE id="1"');
sg('Объект.Свойство', $result['name']);
SQLSelectOne выведет одну строку из таблицы. Далее мы указываем, что из этой строки интересует столбец name
За это сообщение автора fandaymon поблагодарил:
Lyryks (Вт сен 15, 2020 6:34 am)
Рейтинг: 1.16%
Jilber
Сообщения: 682
Зарегистрирован: Ср май 03, 2017 7:41 pm
Благодарил (а): 111 раз
Поблагодарили: 107 раз

Re: Прямой запрос к базе Mysql

Сообщение Jilber » Пн сен 14, 2020 11:35 pm

Сейчас человеку нужно понять как вообще получить что-то из базы и вывести куда-то (просто в свойство, на сцену, в меню, и т.д.). Этот запрос и таблицу "test" он привёл просто для примера. Когда с этим разберётся тогда подскажете ему с конкретным запросом к конкретной таблице. :-)
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Прямой запрос к базе Mysql

Сообщение fandaymon » Пн сен 14, 2020 11:56 pm

Jilber писал(а):
Пн сен 14, 2020 11:35 pm
Сейчас человеку нужно понять как вообще получить что-то из базы и вывести куда-то (просто в свойство, на сцену, в меню, и т.д.). Этот запрос и таблицу "test" он привёл просто для примера. Когда с этим разберётся тогда подскажете ему с конкретным запросом к конкретной таблице. :-)
Вот я и говорю, что таким образом ничего не получится, потому что таким образом мы будем пытаться записать в свойство массив
Lyryks
Сообщения: 6
Зарегистрирован: Чт апр 02, 2020 10:03 am
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Прямой запрос к базе Mysql

Сообщение Lyryks » Вт сен 15, 2020 6:37 am

Спасибо большое, теперь понял как это работает. И спокойно вывел на информер и любое место
Jilber писал(а):
Пн сен 14, 2020 11:15 pm

Код: Выделить всё

$result = SQLSelect('SELECT * FROM test WHERE id="1"');
sg('Объект.Свойство', $result);
Разумеется в строке "sg('Объект.Свойство', $result);" 'Объект.Свойство' надо заменить на свои. После этого запустить этот метод вручную. В свойстве должен появиться результат.

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