PHP code example of subapp / sql

1. Go to this page and download the library: Download subapp/sql library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

subapp / sql example snippets


$factory = Sql::getInstance();

$query = $factory->newQuery();
$builder = $query->getBuilder();

$parser = $factory->getProcessor(); // as default
$parser->getLexer()->tokenize('select U.id, U.name, max(U.id) from users U where U.id > 100');
$ast = $parser->parse();

$converter = $factory->getConverter();

$array  = $converter->toArray($ast); 
$ast    = $converter->toNode($array); 

$converter->toSql($ast); 
// > SELECT U.id, U.name, MAX(U.id) FROM users AS U WHERE U.id > 100

$query->reset(); // optional. this action rewrite root node

$query->select('users')->noCache();
$query->columns('test', 'id', 'created', 'count(*) cnt');
$query->where('id = 1'); 

$query->getSql();

$query->reset(); // optional. this action rewrite root node

$query->insert('users U')->ignore();
$query->fields('U.name', 'created');
$query->values([
    ['tedd', '2019-01-01'],
]);
$query->values([
    ['john', $builder->sql('now()')],
    ['nedd', '2019-01-01'],
]);

$query->getSql();

$query->reset(); // optional. this action rewrite root node

$query->update('users U')->delayed();
$query->sets([
    'name' => 'John',
    'date' => '2018-01-01',
    'hits' => $builder->sql('sum(U.hit)')
]);

$where = $builder->and(
    $builder->or('U.id > 2', 'U.id < len(U.email)'),
    $builder->or('U.id < 0', 'U.id > len(U.name)', $builder->eq('x', $builder->sql('len(x)')))
);

$query->where($where);

$query->reset(); // optional. this action rewrite root node

$query->delete('users U')->quick();
$query->where(
    $builder->or(
        'U.id = 1', 
        $builder->ge('U.id', 1000), 
        $builder->ge('U.access', 
            $builder->sql('rand()')
        ))
);
$query->limit(1);

$query->getSql();
$sql
INSERT IGNORE INTO users AS U (U.`name`, created) VALUES ('tedd', '2019-01-01'), ('john', NOW()), ('nedd', '2019-01-01')