mstone121 / php-object-sql
An object-oriented approach to SQL generation
Installs: 733
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 2
Forks: 0
Open Issues: 0
pkg:composer/mstone121/php-object-sql
Requires
- php: >=7.2
README
An object-oriented approach to SQL generation in PHP
The goal of this project is to apply the principles of object-oriented programming without the strict requirements and lengthy setup of ORMs to the generation of SQL queries.
Before
$query = "SELECT question.id, qr.id, qr.response_label FROM questions q LEFT JOIN question_responses qr ON qr.question_id = q.id"; if ($questionIds) { $query .= "WHERE q.id IN ('" . implode("','", $questionIds) . "')"; } $query .= " ORDER BY q.id, qr.id";
After
$query = new QString( new QSelect([ 'q.id', 'qr.id', 'qr.label' ]), new QFrom('questions'), new QJoinsCollection( new QJoinOn( 'question_responses qr', 'qr.question_id = q.id', 'LEFT' ) ), new QOrder(['q.id', 'qr.id']) ); if ($questionIds) { $query->addComponent( new QWhere( new QAnd( new QIn('q.id', $questionIds) ) ) ); }
Please note that no checking is performed on strings passed to QComponents. This means you could potentially create a query like so:
new QString( new QSelect([ "1; TRUNCATE questions; SELECT *" ]), new QFrom('questions') )
and it would delete everything in the questions table.
This library assumes that you are using it consciously and therefore allows you greater flexibility along with greater responsibility.