Работа с базой данных [phpMyAdmin] через RedBeanPHP
Статьи / PHP
Начало работы:
- Прежде чем начать убедитесь в том, что у вас на хостинге есть база данных, создайте если отсутствует и запишите все данные для будущего подключения к ней
- Давайте приступим. Зайдем на сайт RedBeanPHP перейдем в раздел Download. В этой статье я буду использовать RedBeanPHP 4.3.4 (Legacy)
- Далее откроем архив, где будет файл rb.php, его нужно поместить в папку с проектом
- Создадим файл bd.php (можете назвать по своему) в котором укажем подключение библиотеки, а после подключение к базе данных
- В файле bd.php прописываем, что это скрипт php (<?php) на следующей строке подключаем библиотеку используя require 'путь к rb.php' (если файл в папке со скриптом, то прописываем просто название с расширением)
- С официальной документации копируем код подключения к базе
Примерное содержание файла db.php
<?php
require 'rb.php';
R::setup( 'mysql:host=localhost;dbname=site',
'root', '123123123' );
Хочу отметить, что все примеры сделаны на сайте. Однако не важно содержание сайта, а важен принцип работы. Все эти методы также работают при работе допустим с ботом ВК и меняется лишь обрабатываемые переменные (способ их получения)
Для дальнейшей работы с rb.php мы будем подключать файл db.php к нужному скрипту. Я подключу к index.php
Таким же образом подключаем к любому нужному вашему скрипту:
require 'db.php';
Отлично, теперь с нашего скрипта мы можем взаимодействовать с базой, но для начала добавим проверку на подключение к БД
У RedBeanPHP есть прекрасная функция для этого:
R::testConnection()Если соединение с базой прошло успешно, то нам вернут значение true, а иначе false
Мой код использования этой функции:
if ( !R::testConnection() )
{
echo 'Нет соединения с БД!';
exit;
}else{
echo 'Всё прекрасно работает )';
}
Зайдем на сайте и проверим, выводиться ли нам страшное сообщение об ошибки соединения (не забудьте залить файл на хост)
Я получил удовлетворительный результат. Если же у вас будет написало 'Нет соединения с БД', то проверяйте файл db.php, совпадают ли ваши данные от БД. Если ошибка не исчезнет, то скачайте архив в конце статьи и замените свой файл db.php на файл из архива и данные внутри этого файла. (не однократно уже сталкивался с такой проблемой, что по не известной мне причине не было соединения с БД, но замена файла помогает)
Подключение к базе у нас произведено и мы проверили его. Давайте начнем создавать таблицу используя библиотеку
Первым делом я составлю небольшую форму с методом POST и получу данные от туда на будущую обработку
(получившийся код 'ПОД СПОЙЛЕРОМ')
<?php
require 'db.php';
if ( !R::testConnection() )
{
echo 'Нет соединения с БД!';
exit;
}else{
echo 'Всё прекрасно работает )';
}
$data = $_POST;
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Kotoff.net || Работа с БД</title>
</head>
<body>
<form action="index.php" method="post"><br>
<input type="text" name="name" value="" placeholder="Имя"><br>
<input type="number" name="age" value="" placeholder="Возраст"><br>
<button type="submit" name="send">Отправить</button>
</form>
</body>
</html>
Когда у нас есть данные для записи в БД (в таблицу), то приступим
- Первым делом мы задаем (создаем) переменную, которая будет указывать на название таблицы в базе
$переменная= R::dispense('название таблицы');
- Далее мы по сути как в массив запихиваем значения в нужные колонки. Если нам надо 10 разных колонок, то мы укажем для переменной 10 колонок:
$переменная->названиеКолонки = 'значение или переменная без кавычек';
- Колонкам можно дать любое название, но нельзя чтобы были пробелы в названиях
- После того как мы заполнили все колонки мы записываем нашу переменную используя R::store($переменная);
Таким образом мы указали таблицу, после чего заполнили колонки и записали в базу
ВАЖНО: если в конце не прописать R::store($переменная); то в базе ничего не появиться
Пример:
//Создали переменную, указали таблицу
$create = R::dispense('users');
//Заполняем колонки таблицы
$create->name = $data['name'];
$create->age = $data['age'];
$create->score = 0;
$create->date = date("d.m.Y");
//Записываем таблицу в базу
R::store($create);
Самый главный плюс RedBeanPHP - создание таблицы, даже если она отсутствует
А также стоит отметить, что при создание таблицы автоматические создается и ведется id строк в таблице
А так это уже выглядит в базе:
Отлично, создавать таблицы мы научились, давайте теперь попробуем искать эти самые строчки из базы
Допустим мы будем искать пользователя по имени (важно, такой пользователь должен быть один, так что советую использовать id)
Мы узнали/получили имя пользователя и записали в какую-то переменную, теперь давайте найдем в базе и загрузим этого пользователя. Будем использовать R::findOne('название таблицы', 'колонка = ?', [массив переменных по которым будем искать]);
При использование findOne нужно это записывать в переменную, т.к. если нужная запись существует, то мы получим её полностью.
Пример:
$findUserName = $data['name'];
$findUser = R::findOne('users', 'name = ?', [$findUserName]);
if($findUser){
echo "Данные о пользователе {$findUser['name']} <br> Дата регистрации: {$findUser['date']} <br> Возраст: {$findUser['age']} <br> Кол-во баллов: {$findUser['score']}";
}else{
echo "Такого пользователя не существует!";
}
Всё работает. Прекрасно, давайте теперь отредактируем найденного пользователя. Для этого нужно просто для переменной, в которой искали, указать столбец и изменить на нужное значение. После записать его используй R::store(переменная);
$findUser = R::findOne('users', 'name = ?', [$findUserName]);
$findUser['score'] = $findUser['score'] + 50;
R::store($findUser);
ВАЖНО: столбец содержащий id нельзя изменять таким образом
Теперь давайте получим последние записи используя R::findAll('название таблицы' , ' ORDER BY колонка DESC LIMIT кол-во_результатов ');
Мы получим массив с последними строками. Для вывода такого массива можно использовать foreach
Пример:
(использовал id для того, чтобы вывести последних!)
$loadLastUsers = R::findAll('users' , ' ORDER BY id DESC LIMIT 4 '); //запросили последние 4 записи в таблице users
foreach ($loadLastUsers as $user) { //Цикл. Подробнее почитайте на в документации PHP
echo "{$user['name']}: score = {$user['score']}<br>"; // Выводим нужные данные из полученных пользователей
}
Рассмотрим одну простую, но очень полезную штучку:
R::count('таблица') - подсчитает кол-во строк в таблице
Пример:
$allUsers = R::count('users');
echo "На сайте зарегистрировано: {$allUsers} пользователей";
Последним рассмотрим вывод топ пользователей. Это схоже с выводом последних, только указываем уже нужную нам колонку
Пример:
$topUser = R::findAll('users' , ' ORDER BY score DESC LIMIT 5 '); //запросили 5 записей с наибольшим значением колонке score в таблице users
foreach ($topUser as $user) { //Цикл. Подробнее почитайте в документации к PHP
echo "{$user['name']} набрал {$user['score']} очков<br>"; // Выводим нужные данные из полученных пользователей
}
Вот и конец этой небольшой статьи, но достаточно полезной. Прошу написать в комментарии на сколько всё доступно рассказано и о чем по подробней хотели бы увидеть
Успеха вам с освоением базы данных
example_rb.rar