<?php

/* 
 * EXAMPLE 1 FILE FOR PTCQUERYBUILDER CLASS, PREPARING QUERIES FOR LATER USAGE
 * ALL QUERIES THAT ARE PREPARED WITH THE QUERYBUILDER, NEED PLACE HOLDERS
 * TO SEE THE QUERIES EXECUTED REFER TO PTCQUERYBUILDER-EX2.PHP EXAMPLE FILE
 */
require_once '../PtcQueryBuilder.php';
// including the query builder component
$qb = new PtcQueryBuilder();
// initializing the class
/* SELECT ALL RECORDS */
$query = $qb->table('test_table')->prepare();
/* SELECT WITH COLUMNS SPECIFIED */
$query_with_columns = $qb->table('test_table')->select('some_column as test')->prepare();
/* SELECT WITH A WHERE CLAUSE  */
$query_where = $qb->table('test_table')->where('field1', '=', ':value')->prepare();
/* SELECT WITH WHERE OR WHERE CLAUSE */
$query_where1 = $qb->table('test_table')->where('field1', '=', ':value1')->or_where('field2', '=', ':value2')->prepare();
/* SELECT WITH LIMIT, GROUP BY, ORDER AND LIMIT */
$query_where2 = $qb->table('test_table')->order('field1', 'desc')->limit(':start', ':end')->prepare();
/* INSERT */
$fields = array('field1' => ':value1', 'field2' => ':value2', 'field3' => ':value3');
$query_insert = $qb->table('test_table')->insert($fields)->prepare();
/* UPDATE BASED ON ID */
$fields = array('field1' => ':value1', 'field2' => ':value2');
$query_update = $qb->table('test_table')->update($fields, ':id')->prepare();
/* UPDATE BASED ON A WHERE CLAUSE */
$fields = array('field1' => ':value1', 'field2' => ':value2');
$query_update1 = $qb->table('test_table')->where('field2', '=', ':value3')->update($fields)->prepare();
/* DELETE BASED ON ID */
// mysql user
$db['pass'] = '******';
// mysql pass
$db['database'] = 'database';
// mysql database name
/*************************************************************/
$running = true;
// preventing the example1 file to print the queries
require_once 'ptcquerybuilder-ex1.php';
// require the example 1 file with the prepared queries
/* INITIALIZING A PDO OBJECT TO RUN QUERIES WITH THE QUERYBUILDER */
$pdo = new PDO('mysql:host=' . $db['host'] . ';dbname=' . $db['database'] . ';charset:uft8;', $db['user'], $db['pass']);
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
// setting pdo default fetch mode
/* INITIALIZING THE QUERY BUILDER WITH PDO SUPPORT */
$qb = new PtcQueryBuilder($pdo);
/* CREATE THE EXAMPLE TABLE */
$qb->run("DROP TABLE IF EXISTS `test_table`");
$qb->run("CREATE TABLE `test_table` \n\t(\n\t\t`id` int NOT NULL AUTO_INCREMENT, \n\t\tPRIMARY KEY(`id`),\n\t\t`field1` varchar(255),\n\t\t`field2` varchar(255),\n\t\t`field3` varchar(255)\n\t)");
/* INSERTING DATA WITH PREVIOUSLY PREPARED STATEMENT */
$qb->run($query_insert, array(':value1' => 'somevalue', ':value2' => 'somevalue12', ':value3' => 180));
$qb->run($query_insert, array(':value1' => 'somevalue', ':value2' => 'somevalue1', ':value3' => 20));
$qb->run($query_insert, array(':value1' => 'somevalue', ':value2' => 'somevalue12', ':value3' => 200));
/* GET LAST INSERTED ID */
$last_id = $qb->lastId();
print '<b>last inserted Id:</b> ' . $last_id . '<br><br>';
/* UPDATING DATA WITH PREVIOUSLY PREPARED STATEMENT */
$qb->run($query_update, array(':value1' => 'somevalue', ':value2' => 'insert id', ':id' => $last_id));
// using last inserted id here
$qb->run($query_update1, array(':value1' => 'som32', ':value2' => 'so 43', ':value3' => 'somevalue12'));
/* GET NUMBER OF AFFECTED ROWS BY LAST QUERY */