PHPackages                             erkineren/sql-manipulator - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. erkineren/sql-manipulator

ActiveLibrary[Database &amp; ORM](/categories/database)

erkineren/sql-manipulator
=========================

SQL string manipulator

1.0.0(6y ago)114BSD-3-ClausePHPPHP &gt;=7.2

Since Dec 28Pushed 6y ago1 watchersCompare

[ Source](https://github.com/erkineren/sql-manipulator)[ Packagist](https://packagist.org/packages/erkineren/sql-manipulator)[ RSS](/packages/erkineren-sql-manipulator/feed)WikiDiscussions master Synced 6d ago

READMEChangelogDependencies (1)Versions (2)Used By (0)

SQL Manipulator
===============

[](#sql-manipulator)

SQL string manipulator for PHP Manipulate SQL statements dynamically, regardless of whether the keywords are sorted or "AND / OR" at the beginning.

Install
-------

[](#install)

```
composer require erkineren/sql-manipulator
```

Example
-------

[](#example)

##### Example Code

[](#example-code)

```
// SQL before manipulation
$sql = "SELECT sa.id FROM s_articles sa WHERE sa.active = 1";

$manipulator = new SqlManipulator($sql);

try {
    $manipulator
        ->addWhere("AND (sa.id = 5 OR sa.name LIKE '%al-%')")
        ->addWhere("OR sas.name = 'test'")
        ->addJoin("JOIN s_articles_details sad ON sad.articleID = sa.id")
        ->addJoin("JOIN s_articles_supplier sas ON sas.id = sa.supplierID")
        ->addSelectColumn('sad.ordernumber, COUNT(sad.id) as variant_count, sas.name')
        ->addSelectColumn("(SELECT id*2 FROM s_articles WHERE id = sa.id) as subq")
        ->addHaving("variant_count > 1")
        ->addGroupBy("sa.id");
} catch (SqlManipulatorException $e) {
    echo $e->getMessage();
}

// SQL after manipulation
echo $manipulator->getSql();
```

##### Example Output

[](#example-output)

```
SELECT sa.id, sad.ordernumber, COUNT(sad.id) AS variant_count, sas.name, (SELECT id * 2 FROM s_articles WHERE id = sa.id) AS subq FROM s_articles sa INNER JOIN s_articles_details sad ON sad.articleID = sa.id INNER JOIN s_articles_supplier sas ON sas.id = sa.supplierID WHERE sa.active = 1 AND (sa.id = 5 OR sa.name LIKE '%al-%') OR sas.name = 'test' GROUP BY sa.id HAVING variant_count > 1
```

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

2331d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/16518847?v=4)[Erkin Eren](/maintainers/erkineren)[@erkineren](https://github.com/erkineren)

---

Top Contributors

[![erkineren](https://avatars.githubusercontent.com/u/16518847?v=4)](https://github.com/erkineren "erkineren (3 commits)")

---

Tags

manipulatorparserphpsqlparsermysqlsqlcreatormanipulatorextender

### Embed Badge

![Health badge](/badges/erkineren-sql-manipulator/health.svg)

```
[![Health](https://phpackages.com/badges/erkineren-sql-manipulator/health.svg)](https://phpackages.com/packages/erkineren-sql-manipulator)
```

###  Alternatives

[doctrine/dbal

Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.

9.7k578.4M5.6k](/packages/doctrine-dbal)[greenlion/php-sql-parser

A pure PHP SQL (non validating) parser w/ focus on MySQL dialect of SQL

63911.6M82](/packages/greenlion-php-sql-parser)[catfan/medoo

The lightweight PHP database framework to accelerate development

4.9k1.5M194](/packages/catfan-medoo)[phpmyadmin/sql-parser

A validating SQL lexer and parser with a focus on MySQL dialect.

47750.4M55](/packages/phpmyadmin-sql-parser)[ifsnop/mysqldump-php

PHP version of mysqldump cli that comes with MySQL

1.3k5.5M69](/packages/ifsnop-mysqldump-php)[cycle/orm

PHP DataMapper ORM and Data Modelling Engine

1.3k835.4k65](/packages/cycle-orm)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
