| Login | Register | |||
| Recommend this page to a friend! |
| Classes of Tom Schaefer | > | SQL Parse and Compile | > | Download | > | > | > | |||||
|
|||||||||||||||||||||||||
| Author | Detailed description | |||||||
| Applications | ||||||
Screenshots
Author
Innovation AwardGroups
Detailed descriptionThis package can be used to parse and compose SQL queries programatically.
It can take an SQL query and parse it to extract the different parts of the query like the type of command, fields, tables, conditions, etc.. It can also be used to do the opposite, i.e. compose SQL queries from values that define each part of the query. Features: I. Parser - insert - replace - update - delete - select - union - subselect - recognizes flow control function (IF, CASE - WHEN - THEN) - recognition of many sql functions II. Composer (Compiler) - insert - replace - update - delete - select - union III. Wrapper SQL - object oriented writing of SQL statements from the scratch i.e.: ################################################# $insertObject = new Sql(); $insertObject ->setCommand("insert") ->addTableNames("employees") ->addColumnNames(array("LastName","FirstName")) ->addValues( array( array("Value"=>"Davolio","Type"=>"text_val"), array("Value"=>"Nancy","Type"=>"text_val"), ) ); $sqlout = $insertObject->compile(); ################################################# result: echo $sqlout; ################################################# INSERT INTO employees (LastName, FirstName) VALUES ('Davolio', 'Nancy') ################################################# ################################################# a more advanced example: ################################################# $sql = 'SELECT countrylanguage.CountryCode, country.Name, country.Continent, country.Region, country.SurfaceArea, city.District, country.IndepYear, country.Population, city.CountryCode, city.Name, city.Population, countrylanguage.Language AS lang, countrylanguage.IsOfficial, countrylanguage.Percentage, country.GovernmentForm, country.LocalName, country.GNPOld, country.GNP, country.LifeExpectancy FROM country co LEFT JOIN city ct ON co.Code = ct.CountryCode LEFT JOIN countrylanguage cl ON cl.CountryCode = ct.CountryCode WHERE (co.Continent='Asia' AND cl.Language='Pashto') GROUP BY co.Name HAVING ct.CountryCode = 'AFG' LIMIT 100 ': // using wrapper class $sqlDef = new Sql(); $sqlDef->parse($sql); // adding a left join $sqlDef->setJoinLeft( array( 'Left'=> array("Value"=>"employees.employeeID", "Type" => "ident"), 'Op'=> '=', 'Right'=> array("Value"=>1, "Type" => "int_val"), ) ); $sqlout = $sqlDef->compile(); ################################################# result: echo $sqlout; ################################################# SELECT countrylanguage.CountryCode, country.Name, country.Continent, country.Region, country.SurfaceArea, city.District, country.IndepYear, country.Population, city.CountryCode, city.Name, city.Population, countrylanguage.Language AS lang, countrylanguage.IsOfficial, countrylanguage.Percentage, country.GovernmentForm, country.LocalName, country.GNPOld, country.GNP, country.LifeExpectancy FROM country AS co LEFT JOIN city AS ct ON co.Code = ct.CountryCode LEFT JOIN countrylanguage AS cl ON cl.CountryCode = ct.CountryCode LEFT JOIN employees ON employees.employeeID = 1 WHERE (co.Continent = 'Asia' and cl.Language = 'Pashto') GROUP BY co.Name HAVING ct.CountryCode = 'AFG' LIMIT 0,100 ################################################# IV. Hint Sql_Compiler is none validating, but throws errors on type mismatch or corrupt statements Note: If you have good ideas to improve this set of classes, let me know. Acknowledgement: Thanks a lot to George Antoniadis (Author: rephp framework, www.rephp.net) from noodles.gr for his qualified feedback. Many thanks to all, which gave me qualified feedback and voted for this set of classes at the contest. User ratings
Applications that use this classNo application links were specified for this class.
Files
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Copyright (c) Icontem 1999-2010 | PHP Classes | - PHP Class Scripts |
| PHP Book Reviews | - Reviews of books and other products |