sqlgenix / sqlgenix
A PHP library that simplifies the construction of SQL queries for dynamic web applications.
v2.0.0
2025-09-15 10:06 UTC
Requires
- php: >=7.1
- ext-mysqli: *
- doctrine/dbal: ^3.0
- phpunit/php-code-coverage: ^9.0
- phpunit/php-invoker: ^3.0
Requires (Dev)
- phpunit/php-code-coverage: ^9.0
- phpunit/php-invoker: ^3.0
- phpunit/phpunit: ^9.0
README
Supercharge Your Database Interactions
SQLGenix is your go-to SQL query generator that takes the pain out of database operations. Say goodbye to manual SQL writing and hello to elegant, chainable methods that make database interactions a breeze. Perfect for both rapid application development and sophisticated database management tasks.
Table of Contents
โจ Key Features
- ๐ฏ Smart Query Generation - Build complex SQL queries with simple, intuitive methods
- ๐ Full CRUD Support - Handle SELECT, INSERT, UPDATE, and DELETE operations effortlessly
- ๐ Multi-Database Support - Works seamlessly with MySQL, PostgreSQL, SQLite, and more
- ๐ก๏ธ Robust Error Handling - Graceful exception management keeps your application stable
- โก Lightning Fast - Optimized for performance without sacrificing flexibility
- ๐ Pagination Support - Built-in LIMIT, OFFSET, and page-based pagination
- ๐ Query Caching - Intelligent caching system for improved performance
- ๐ UNION Operations - Combine multiple queries with UNION and UNION ALL
- ๐ฆ Bulk Operations - Efficient batch INSERT, UPDATE, and DELETE operations
- ๐ Advanced Joins - Support for INNER, LEFT, RIGHT joins with complex conditions
- ๐๏ธ Database Adapters - Adapter pattern for database-specific optimizations
๐ Quick Start
Installation
Get started with Composer:
composer require sqlgenix/sqlgenix
Or clone the repository manually:
git clone https://github.com/Inkflow59/SQLGenix.git
cd SQLGenix
composer install
๐ Usage Examples
Create New Records
require 'src/SQLInsert.php'; $db = new Database(); $insert = new SQLInsert($db); $insert->into('users') ->set(['name', 'email'], ['John Doe', 'john@example.com']) ->execute();
Fetch Data
require 'src/SQLSelect.php'; $db = new Database(); $select = new SQLSelect($db); $result = $select->select(['name', 'email']) ->from('users') ->where('email = "john@example.com"') ->execute();
Update Records
require 'src/SQLUpdate.php'; $db = new Database(); $update = new SQLUpdate($db); $update->table('users') ->set('name', 'Jane Doe') ->where('email = "john@example.com"') ->execute();
Remove Data
require 'src/SQLDelete.php'; $db = new Database(); $delete = new SQLDelete($db); $delete->from('users') ->where('email = "john@example.com"') ->execute();
Pagination
require 'src/SQLSelect.php'; $db = new Database(); $select = new SQLSelect($db); $result = $select->select(['*']) ->from('users') ->where('status = "active"') ->orderBy(['created_at'], 'DESC') ->paginate(2, 20) // Page 2, 20 per page ->execute();
Query Caching
require 'src/QueryCache.php'; require 'src/SQLSelect.php'; $cache = new QueryCache(100, 3600); // 100 items, 1 hour TTL $db = new Database(); $select = new SQLSelect($db, $cache); $result = $select->select(['*']) ->from('users') ->where('active = 1') ->execute(); // Cached automatically
UNION Operations
require 'src/SQLSelect.php'; $db = new Database(); $activeUsers = new SQLSelect($db); $activeUsers->select(['name', 'email'])->from('active_users'); $inactiveUsers = new SQLSelect($db); $inactiveUsers->select(['name', 'email'])->from('inactive_users'); $allUsers = new SQLSelect($db); $result = $allUsers->select(['name', 'email']) ->from('current_users') ->union($activeUsers) ->unionAll($inactiveUsers) ->execute();
Bulk Operations
require 'src/BulkOperations.php'; $db = new Database(); $bulk = new BulkOperations($db); // Bulk insert 1000 records $data = []; // Your data array $result = $bulk->bulkInsert('users', ['name', 'email'], $data); echo "Inserted: " . $result['inserted_rows'] . " rows";
Multi-Database Support
require 'src/DatabaseAdapterFactory.php'; require 'src/UniversalSQLSelect.php'; // Create MySQL adapter $mysqlAdapter = DatabaseAdapterFactory::createMySQL([ 'host' => 'localhost', 'database' => 'myapp', 'username' => 'user', 'password' => 'pass' ]); // Create PostgreSQL adapter $postgresAdapter = DatabaseAdapterFactory::createPostgreSQL([ 'host' => 'localhost', 'database' => 'myapp', 'username' => 'user', 'password' => 'pass' ]); // Same query works on both databases $mysqlQuery = new UniversalSQLSelect($mysqlAdapter); $postgresQuery = new UniversalSQLSelect($postgresAdapter); $result = $mysqlQuery->select(['*'])->from('users')->execute();
โ๏ธ Requirements
- PHP 7.0+
- Any major SQL database (MySQL, PostgreSQL, SQLite)
- Composer for dependency management
๐งช Testing
Run the test suite with:
composer test
๐ค Contributing
We love contributions! Here's how you can help:
- Fork the repo
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
๐ License
SQLGenix is MIT licensed. See the LICENSE file for details.
๐ฌ Get in Touch
Questions or suggestions? Drop me a line
Made with โค๏ธ by SQLGenix Team