LODatabase

LODatabase is a simple, file-based PHP database class that works with JSON and plain text files. It includes essential CRUD functions and supports transaction-like behavior using action queuing, commit, and rollback.

LODatabase Demo

Input

Refresh the webpage to see a new example.

<?php

require_once 'lodatabase.php';

// Demo file
$fname = 'demo-' . uniqid() . '.json';

// Create a new database
$db = new LODatabase($fname);

// Insert some data
$db->insert(['name' => 'Alice', 'age' => 25, 'city' => 'New York']);
$db->insert(['name' => 'Bob', 'age' => 30, 'city' => 'Chicago']);
$db->insert(['name' => 'Charlie', 'age' => 35, 'city' => 'Los Angeles']);

// Commit changes
$db->commit();

// Select all users
$users = $db->select();
echo "<h3>All Users:</h3>\n";
print_r($users);

// Select users older than 30
$olderUsers = $db->select(function($row) {
    return $row['age'] > 30;
});
echo "<h3>Users over 30:</h3>\n";
print_r($olderUsers);

// Update a user
$db->update(['id' => 1, 'name' => 'Alice Smith', 'age' => 26]);
$db->commit();

// Replace row with something else, using $merge parameter
$db->update(['id' => 3, 'not_a_user' => true], false);
$db->commit();

// Delete a user
$db->remove(2);
$db->commit();

// Select after changes
$finalUsers = $db->select();
echo "<h3>Users after changes:</h3>\n";
print_r($finalUsers);

// Clean up
unlink($fname);

Output

<h3>All Users:</h3>
Array ( [0] => Array ( [id] => 3 [name] => Charlie [age] => 35 [city] => Los Angeles ) [1] => Array ( [id] => 2 [name] => Bob [age] => 30 [city] => Chicago ) [2] => Array ( [id] => 1 [name] => Alice [age] => 25 [city] => New York ) )
<h3>Users over 30:</h3>
Array ( [0] => Array ( [id] => 3 [name] => Charlie [age] => 35 [city] => Los Angeles ) )
<h3>Users after changes:</h3>
Array ( [0] => Array ( [id] => 3 [name] => Charlie [age] => 35 [city] => Los Angeles ) [1] => Array ( [id] => 1 [name] => Alice [age] => 25 [city] => New York ) )