PHP Classes

File: README-EL.md

Recommend this page to a friend!
  Packages of Christos Drogidis   jsqldb   README-EL.md   Download  
File: README-EL.md
Role: Documentation
Content type: text/markdown
Description: Initial
Class: jsqldb
Examples to use JSQLDB to store data in JSON files
Author: By
Last change: Initial
Date: 21 days ago
Size: 6,733 bytes
 

Contents

Class file image Download

JSQL Database

JSQLDB - ?????? ????? ????????? JSON ?? SQL ??????? ??? ?? Ascoos OS

? JSQLDB ???????? ??? ???????????? ?????? ????? ????????? ??? Ascoos OS ??? ????????? ???????????? ?? ?????? JSON, ?? ?????????? SQL-like ??????????. ??????????? ??? ????????? ??? ??????????? ??????????, ????????, ???????? ??? ????? ??????????? ??? MySQL, MariaDB ? SQLite.

? ?????????? ??? ????? ?????? ??????????? ?? ??? ?????? ??? Ascoos OS, ??? ? ???????? ??? ???? ??????? ???? ??? TJSQLDBHandler. ???? ?? ?????????, ?? ?????? ??? ?? ????????? ?????????????? ??? ?? ???? ?? ??????????? ???????, ?????????????? ??????????? ??? ????????.

?? ????? ?????

$db = new TJSQLDBHandler($conf);

$db->setSQLQuery("
    SELECT title, created_at
    FROM #__articles
    ORDER BY created_at DESC
    LIMIT 5
");

$db->execute();

print_r($db->getResults());

$db->close();

?? ????????? ? JSQLDB

? JSQLDB ?????????? ?? ???????? ?? JSON ??????, ??????????? ?????????, ???????? ??? TEXT ????? ??? SQL ??????? ??? CRUD ???????????. ? ?????? ????? ???????????????? ??? PHP 8.4+ ??? ????????? ??? TUTF8 Grapheme Engine ??? Ascoos OS, ???? ? ??????????? ???????? ?? ??????? ?? ???? ?? ?????????? ?????? ??????? ??? ??? ?? bytes.

???? ???????? ??? ? ???? ??? «?????» ???? ?????????? ??? ????, ?????????? ????? ?? ????? ???????? ?????????? (emoji, ???????, ??????????? ???????) ??? ?????????? ????????? ??? ??????????? ????? ?? ???? ??? ???????.

??????? ??? ????????????

? JSQLDB ??? ??????? ???????????. ?? ??????? ????????? (config, users, root path) ????????? ??? configuration ??? Ascoos OS ??? ????? ????????????????.

?????????? ????????? ??????????:

'db' => [
    'db_driver' => 'jsqldb',
    'jsqldb' => [
        'config_path'  => '/path/to/jsqldb/conf/config.json',
        'users_path'   => '/path/to/jsqldb/conf/users.json',
        'db_root_path' => '/path/to/jsqldb/db',
        'dbname'       => 'jsqldb',
    ],
],

???? domain/subdomain ?????? ?? ???? ???? ??? ????, ?? ???? ??? credentials:

'db' => [
    'db_driver' => 'jsqldb',
    'jsqldb' => [
        'host' => 'localhost',
        'port' => 28031,
        'user' => 'user',
        'pass' => 'pass',
        'dbname' => 'test_db',
    ],
],

?????????? 1 - ?????????? ?????, ?????? ??? ?????? ????????

?? ???????? ?????????? (examples/example3.php) ??????? ??? ?????? workflow: ?????????? ?????, ??????, ??????, batch insert ??? ???????? ?????????.

$jsqldb = new TJSQLDBHandler($conf, [
    'tables_prefix' => 'ascoos_',
    'default_compression' => true
]);

$jsqldb->createDatabase('test_db');
$jsqldb->createUser('user', 'pass', 'test_db');
$jsqldb->selectDatabase('test_db');

$sql = "CREATE TABLE IF NOT EXISTS `#__articles` (...);";
$jsqldb->setSQLQuery($sql);
$jsqldb->execute();

$insertQuery = "INSERT INTO #__articles (...) VALUES (?, ?, ?, ?, ?, ?)";
$jsqldb->bind('iiiiss', [$data], $insertQuery);
$jsqldb->execute();

$jsqldb->setSQLQuery("SELECT * FROM #__articles LIMIT 10");
$jsqldb->execute();
$data = $jsqldb->getResults();

$jsqldb->close();

?????????? 2 - ??????? ???????? ?? JOIN ??? ???????????? ?????

?? ??????? ?????????? (examples/example4.php) ??????????? ??? ??? ??????? ???????: ??????? ???????? ?? slug, excerpt, content, timestamps, ENUM status ??? JOIN ?? ??????? ??? ??????????.

$jsqldb->createDatabase('myapp_2026');
$jsqldb->createUser('webuser', 'strongPass123!', 'myapp_2026');
$jsqldb->selectDatabase('myapp_2026');

$createTable = "CREATE TABLE IF NOT EXISTS `#__news` (...);";
$jsqldb->setSQLQuery($createTable);
$jsqldb->execute();

$insertQuery = "INSERT INTO #__news (...) VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
$jsqldb->bind('ssssiiis', $data, $insertQuery);
$jsqldb->execute();

$selectQuery = "
    SELECT n.id, n.title, n.excerpt, n.published_at,
           u.username AS author_name,
           c.name     AS category_name
    FROM #__news n
    LEFT JOIN #__users u ON u.id = n.author_id
    LEFT JOIN #__categories c ON c.id = n.category_id
    WHERE n.status = 'published'
      AND n.published_at <= NOW()
    ORDER BY n.published_at DESC
    LIMIT 10
";

$jsqldb->setSQLQuery($selectQuery);
$jsqldb->execute();
$articles = $jsqldb->getResults();

? TUTF8 Grapheme Engine

? JSQLDB ???????????? ??? TUTF8 Engine ??? Ascoos OS, ? ?????? ?????????? ?? ????? ??? ??? ??????????? ???????? ?? ???? ?? Grapheme Clusters.

??????????:

| ?????????? | strlen() | mb_strlen() | utf8->strlen() | |-----------|----------|-------------|----------------| | ? | 4 | 1 | 1 | | ?? | 8 | 2 | 1 | | ?? | 8 | 2 | 1 |

???? ???????????:

  • ????? ??????????
  • ????? indexing
  • ??????? ???????? ??????????
  • ????? ??????????? ?? ???? ??? ???????

?????

? JSQLDB ???????? ????? ??? Ascoos OS ??? ?????????? ??? ??? ??????? ????? ??? ?????.