Задать вопрос
zkrvndm
@zkrvndm
Архитектор решений

Как максимально упростить работу с MySQL?

Существуют ли библиотеки или плагины на языке PHP, которые максимально упрощали бы работу MySQL?

Как минимум, нужна возможность записать данные по ключу, а затем достать, где угодно и когда угодно:
setItem('ключ', 'значение'); // Записываем данные
getItem('ключ'); // Читаем данные

Как максимум, более понятные и удобные механизмы поиска и фильтрации, чем предоставляет MySQL из под коробки.
  • Вопрос задан
  • 2268 просмотров
Подписаться 2 Простой 4 комментария
Решения вопроса 1
zorca
@zorca
Конечно существуют. Я думаю Вам идеально зайдет RedBean ORM:
<?php
    require 'rb.php';
    R::setup();

    //for version 5.3 and higher
    //optional but recommended
    R::useFeatureSet( 'novice/latest' );

    $post = R::dispense( 'post' );
    $post->text = 'Hello World';

    //create or update
    $id = R::store( $post );

    //retrieve
    $post = R::load( 'post', $id );
    
    //delete
    R::trash( $post );
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@rohoza_mykola
Согласен с двумя предыдущими оракулами.
Вообще такое можно слепить и на коленке:
setItem('ключ', 'значение') {
// предпологаем что база существует
$db->sql('insert ... on duplicate key update ')
}

getItem('ключ'){
$db->sql("select value where key LIKE 'ключ' ")
}

---
Вот только проблемы начнуться при увеличения количества записей. Так же вопросы чистки данных, к примеру
$db->sql("delete where key LIKE '%ru%' ")
и все Русланы полетели в корзину (пример высосан из пальца, но надеюсь понятно).
В целом для ключ значение лучше использовать к примеру redis, либо задуматься о структуре данных.
Если это какой-то словарь с метаданным для страницы (к примеру опять же) то имеет смысл заложить мультиязыность на этапе зачатия так же добавить связь к чему этот словарь
select * where post_id = 1 AND  lang_id = 1;
delete  where lang_id = 3;
delete  where post_id IN (1,2,3)

я уж не говорю об удобстве поиска и выборки при таком подходе (строка заканчивается словом "тест")
select * where some_meta_value LIKE '%тест' AND  lang_id = 1;
Ответ написан
Комментировать
Neopitniy
@Neopitniy
Автор, да без разницы, на мускуле, в файле. Я бы хранил в БД, тк меньше писанины. Пишешь две самые обыкновенные функции setItem и getItem. А внутри делай запросы к бд.
function getItem($key){
	$stmt = $db->prepare("SELECT `val` FROM `tab` WHERE `key` = ?");
	$stmt->execute(array($key));
	return $stmt->fetchColumn();
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы