База данных
Работа с базой реализует слой «модель» в терминологии MVC. В состав фреймворка входит абстрактный класс waModel для описания модели. Классы описания сущностей предметной области приложения наследуются от waModel .
Файлы классов модели размещаются в файловой структуре приложения в подкаталоге приложения lib/models/ .
В описании модели есть только одно обязательное поле — название таблицы в базе данных в переменной $table . Пример класса описания модели:
Модель инициализируется в коде приложения следующим образом:
В этом примере blog — это пример идентификатора приложения. После инициализации модель получает от базы данных описание указанной таблицы (с помощью запроса DESCRIBE $table ) и кеширует его. На этом этапе определяется главный ключ (primary key) таблицы, определяются поля и их типы.
В коде контроллеров и экшенов все взаимодействие с базой данных происходит исключительно через классы моделей приложения:
Класс waModel содержит ряд сервисных методов для автоматического построения SQL-запросов, что позволяет достичь независимости кода приложения от конкретного вида используемой СУБД.
Методы автоматического построения SQL-запросов
Запросы SELECT
Запросы UPDATE
Запросы DELETE
Запросы INSERT и REPLACE
Выполнение SQL-запросов, записанных в явном виде
Во фреймворке доступны два основных метода модели для выполнения SQL-запросов — query и exec . Первым параметром они принимают SQL-запрос, а вторым — необязательный массив значений для плейсхолдеров.
Пояснения к примеру:
- i:id — это именованный плейсхолдер, в котором i указывает на тип Integer (то есть значение, полученное из массива, будет приведено к целочисленному типу);
- id — ключ в массиве значений;
- array(‘id’ => $id) — массив значений.
Доступные для использования типы значений плейсхолдеров:
Если тип плейсхолдера явно не указан (например, в запросе просто используется :id , то по умолчанию используется тип String ). Использование плейсхолдеров упрощает построение запросов, а главное исключает возможность написания небезопасных SQL-запросов, подверженных SQL-инъекциям.
Использование плейсхолдеров не является обязательным, однако в случае отказа от них разработчик должен самостоятельно позаботиться о подстановке данных в запрос. Здесь может быть полезным метод модели escape , который экранирует строки (при использовании СУБД MySQL его работа аналогична результату выполнения функции mysql_real_escape_string ):
Единственное отличие между методами query и exec заключается в результате, который они возвращают.
Метод query($sql, $params = null)
Метод выполняет SQL-запрос и возвращает объект результата. Тип возвращаемого объекта зависит от типа запроса:
- для SELECT-запросов возвращается объект типа waDbResultSelect ,
- для INSERT-запросов — waDbResultInsert
- для UPDATE-запросов — waDbResultUpdate
- для DELETE-запросов — waDbResultDelete
Запросы SELECT
Возвращается объект результата типа waDbResultSelect , который можно использовать, например, в цикле foreach . Примеры работы с waDbResultSelect :
Запросы DELETE и UPDATE
Возвращается объект результата типа waDbResultDelete и waDbResultUpdate .
Запросы INSERT
Возвращается объект типа waDbResultInsert .
Метод exec($sql, $params = null)
Метод выполняет SQL-запрос и возвращает результат, полученный от адаптера работы с БД (в случае с MySQL возвращается результат выполнения функции mysql_query ). Этот метод стоит использовать в тех случаях, когда результат выполнения запроса не нужен или достаточно проверить, успешно ли выполнился запрос.
Конструктор SELECT-запросов
SELECT-запросы можно строить с помощью простого конструктора запросов, например:
Рекомендации по реализации дополнительных методов модели в приложении
Чтобы во всех местах приложения не писать один и тот же код (напрямую используя базовые методы модели), можно в модели вашего приложения объявить методы для реализации часто используемых операций.
Все методы для работы с одной таблицей реализуются в соответствующем классе модели. В дальнейшем вы можете усовершенствовать эти методы модели (например добавлять кеширование).
Рекомендуется большинство операций с конкретной таблицей БД реализовывать в собственных методах модели, не привязанных к названию полей. Это позволит в случае рефакторинга данной таблицы внести изменения лишь в один файл — в код класса модели.
Подключение к другим базам данных
Класс waModel можно использовать для подключения к другим базам кроме той, в которой хранятся данные Вебасиста. Это может быть полезно, например, для импорта данных из стороннего программного обеспечения.
Для подключения к другой базе данных необходимо при создании экземпляра модели в качестве аргумента конструктора указать параметры подключения. Сделать это можно несколькими способами.
Создание постоянной конфигурации подключения
Если вы планируете многократно использовать в вашем приложении подключение к другой (какой-то определенной) базе данных, добавьте параметры подключения в конфигурационный файл фреймворка wa-config/db.php в виде дополнительного массива, как показано в примере:
В приведенном выше примере добавлена новая запись с параметрами подключения, условно обозначенная как extra . Для подключения к базе данных wordpress (в данном примере) необходимо в PHP-коде приложения создать экземпляр модели следующим образом:
При использовании методов созданной таким образом модели обращение будет выполняться только к базе данных, имя которой указано в соответствующей конфигурации.
Динамическое указание параметров подключения
Если использовать постоянное подключение к какой-то заранее известной базе данных не планируется, то при создании экземпляра модели параметры подключения можно указать явно — в виде массива данных. Пример создания модели в PHP-коде приложения таким способом показан ниже:
Оба приведенных выше способа подключения к другой базе данных применимы не только к экземпляру базового класса waModel , но и к экземплярам классов моделей вашего приложения (например, myappSomeModel ):
При использовании таких подключений в моделях вашего приложения дополнительные (созданные вами) методы этих моделей должны учитывать структуру таблиц указываемой базы данных.
Для подключения к базам данных с различной структурой рекомендуется создавать отдельные классы моделей. Это позволит упростить структуру вашего приложения и облегчит отладку программного кода.
Webasyst — это CMS нового поколения, совмещающая в себе инструменты для управления сайтом и интернет-магазином с полезными приложениями для совместной работы с коллегами и взаимодействия с клиентами. Единый центр управления бизнесом через интернет.
Платформа
Магазин Webasyst
Помощь
Мы получаем и обрабатываем персональные данные посетителей сайта в соответствии с Политикой обработки персональных данных. Отправка персональных данных с помощью любой страницы сайта подразумевает согласие со всеми пунктами Политики.
Источник
Где находятся настройки подключения к БД в CMS
Где находятся настройки подключения к БД в CMS
WordPress
В корневом каталоге вашего сайта в файле wp-config.php найдите строки:
- u77777_database — база данных, которую использует сайт;
- u77777_dbuser — пользователь, от имени которого сайт подключается к базе данных;
- password — пароль, с которым сайт подключается к базе данных .
Joomla
В корневом каталоге вашего сайта в файле configuration.php найдите строки:
- u77777_dbuser — пользователь, от имени которого сайт подключается к базе данных;
- u77777_database — база данных, которую использует сайт;
- password — пароль, с которым сайт подключается к базе данных .
Bitrix
В зависимости от версии Bitrix, а именно от используемого ядра, сведения о подключении к базе данных содержатся в разных файлах.
Bitrix с новым ядром D7
Начиная с версии «1С-Битрикс: Управление сайтом 14.0» настройки БД хранятся в файле /bitrix/.settings.php в секции «connections»
Bitrix со старым ядром:
В корневом каталоге вашего сайта перейдите в подкаталог /bitrix/php_interface/dbconn.php найдите строки:
- u77777_dbuser — пользователь, от имени которого сайт подключается к базе данных;
- password — пароль, с которым сайт подключается к базе данных;
- u77777_database — база данных, которую использует сайт.
Drupal 6
В файле /sites/default/settings.php найдите строку:
Где:
username —имя пользователя; * password — пароль; * mysqlhost — сервер базы данных; * databasename* — имя базы данных.
Drupal 7
В файле /sites/default/settings.php найдите строки:
- u77777_database — имя базы данных;
- u77777_dbusert — пользователь базы данных;
- password — пароль пользователя.
ModX
В файле /core/config/config.inc.php найдите строки:
- u77777_dbuser — пользователь, от имени которого сайт подключается к базе данных;
- password — пароль, с которым сайт подключается к базе данных;
- u77777_database — база данных, которую использует сайт.
DLE
В файле /engine/data/dbconfig.php найдите строку:
- u77777_database — имя базы данных;
- u77777_dbusert — пользователь базы данных;
- password — пароль пользователя.
PrestaShop
В файле /config/settings.inc.php или /app/config/parameters.php нужно найти строки:
- u77777_database — имя базы данных;
- u77777_dbusert — пользователь базы данных;
- password — пароль пользователя.
MODx
В файле /manager/includes/config.inc.php нужно найти строки:
- u77777_dbusert — пользователь базы данных;
- password — пароль пользователя;
- u77777_database — имя базы данных.
Magento
В файле app/etc/local.xml нужно найти строки:
- u77777_dbusert — пользователь базы данных;
- password — пароль пользователя;
- u77777_database — имя базы данных.
Opencart
Файлы config.php и admin/config.php нужно найти строки:
- u77777_dbusert — пользователь базы данных;
- password — пароль пользователя;
- u77777_database — имя базы данных.
ImageCMS
В файле application/config/database.php нужно найти строки:
- u77777_dbusert — пользователь базы данных;
- password — пароль пользователя;
- u77777_database — имя базы данных.
PHPShop
В файле /phpshop/inc/config.ini нужно найти строки:
- u77777_dbusert — пользователь базы данных;
- password — пароль пользователя;
- u77777_database — имя базы данных.
WebAsyst
Файлы /dblist/логин.xml , /kernel/wbs.xml и файл кеша /temp/scdb/.settings.логин:
- u77777_database — имя базы данных;
- password — пароль пользователя;
- u77777_dbusert — пользователь базы данных.
ShopCMS
В файле /core/config/connect.inc.php нужно найти строки:
- u77777_dbusert — пользователь базы данных;
- password — пароль пользователя;
- u77777_database — имя базы данных.
Shop-script
В файле /cfg/connect.inc.php нужно найти строки:
- u77777_dbusert — пользователь базы данных;
- password — пароль пользователя;
- u77777_database — имя базы данных.
Источник
My FreeLance
Бесплатная биржа фриланса, фриланс для всех
Категории
Форумы:
Форумы
Мы в соцсетях
Реклама
Подключение к БД в различных cms
Подключение к базе данные Bitrix:
$DBHost = “Хост”;
$DBLogin = “Логин”;
$DBPassword = “Пароль”;
$DBName = “Имя БД”;
а также файл /bitrix/.settings.php:
‘host’ => ‘сервер’,
‘database’ => ‘имя_базы_данных’,
‘login’ => ‘имя_пользователя’,
‘password’ => ‘пароль’,
Подключение к базе данные Webasyst
return array (
‘default’ =>
array (
‘host’ => ‘Хост’,
‘port’ => false,
‘user’ => ‘Логин’,
‘password’ => ‘Пароль’,
‘database’ => ‘Имя БД’,
‘type’ => ‘mysql’,
),
);
Подключение к базе данные Joomla
var $host = ‘хост’;
var $user = ‘логин’;
var $db = ‘Имя БД’;
var $password = ‘пароль’;
Подключение к базе данные DLE
define (“DBHOST”, “хост”);
define (“DBNAME”, “Имя БД”);
define (“DBUSER”, “логин”);
define (“DBPASS”, “пароль”);
Подключение к базе данные WordPress
define(‘DB_NAME’, ‘Имя БД’);
define(‘DB_USER’, ‘логин’);
define(‘DB_HOST’, ‘хост’);
define(‘DB_PASSWORD’, ‘пароль’);
Подключение к базе данные Drupal 6
файл /site/default/settings.php, в котором есть строка:
username – логин;
password – пароль;
mysqlhost – хост;
databasename – имя БД.
Подключение к базе данные Drupal 7
‘database’ => ‘имя БД’,
‘username’ => ‘логин’,
‘password’ => ‘пароль’,
‘host’ => ‘хост’,
Подключение к базе данные СMS Magento
файлы config.php и admin/config.php
define(‘DB_HOSTNAME’, ‘хост’);
define(‘DB_USERNAME’, ‘логин’);
define(‘DB_PASSWORD’, ‘пароль’);
define(‘DB_DATABASE’, ‘имя БД’);
Подключение к базе данные CMS PHPShop
файл /phpshop/inc/config.ini:
host = “хост”;
user_db = “логин”;
pass_db = “пароль”;
dbase = “имя БД”;
Подключение к базе данные ImageCMS
$db[‘default’][‘hostname’] = ‘хост’;
$db[‘default’][‘username’] = ‘логин’;
$db[‘default’][‘password’] = ‘пароль’;
$db[‘default’][‘database’] = ‘имя БД’;
Источник