本文实例讲述了PHP实现的通过参数生成MYSQL语句类。分享给大家供大家参考,具体如下:
这个类可以通过指定的表和字段参数创建SELECT ,INSERT , UPDATE 和 DELETE 语句。
这个类可以创建SQL语句的WHERE条件,像LIKE的查询语句,使用LEFT JOIN和ORDER 语句
<?php /* ******************************************************************* Example file This example shows how to use the MyLibSQLGen class The example is based on the following MySQL table: CREATE TABLE customer ( id int(10) unsigned NOT NULL auto_increment, name varchar(60) NOT NULL default \'\', address varchar(60) NOT NULL default \'\', city varchar(60) NOT NULL default \'\', PRIMARY KEY (cust_id) ) TYPE=MyISAM; ******************************************************************* */ require_once ( \" class_mylib_SQLGen-1.0.php \" ); $fields = Array ( \" name \" , \" address \" , \" city \" ); $values = Array ( \" Fadjar \" , \" Resultmang Raya Street \" , \" Jakarta \" ); $tables = Array ( \" customer \" ); echo \" <b>Result Generate Insert</b><br> \" ; $object = new MyLibSQLGen(); $object -> clear_all_assign(); // to refresh all property but it no need when first time execute $object -> setFields( $fields ); $object -> setValues( $values ); $object -> setTables( $tables ); if ( ! $object -> getInsertSQL()){ echo $object -> Error; exit ;} else { $sql = $object -> Result; echo $sql . \" <br> \" ;} echo \" <b>Result Generate Update</b><br> \" ; $fields = Array ( \" name \" , \" address \" , \" city \" ); $values = Array ( \" Fadjar \" , \" Resultmang Raya Street \" , \" Jakarta \" ); $tables = Array ( \" customer \" ); $id = 1 ; $conditions [ 0 ][ \" condition \" ] = \" id=\'$id\' \" ; $conditions [ 0 ][ \" connection \" ] = \"\" ; $object -> clear_all_assign(); $object -> setFields( $fields ); $object -> setValues( $values ); $object -> setTables( $tables ); $object -> setConditions( $conditions ); if ( ! $object -> getUpdateSQL()){ echo $object -> Error; exit ;} else { $sql = $object -> Result; echo $sql . \" <br> \" ;} echo \" <b>Result Generate Delete</b><br> \" ; $tables = Array ( \" customer \" ); $conditions [ 0 ][ \" condition \" ] = \" id=\'1\' \" ; $conditions [ 0 ][ \" connection \" ] = \" OR \" ; $conditions [ 1 ][ \" condition \" ] = \" id=\'2\' \" ; $conditions [ 1 ][ \" connection \" ] = \" OR \" ; $conditions [ 2 ][ \" condition \" ] = \" id=\'4\' \" ; $conditions [ 2 ][ \" connection \" ] = \"\" ; $object -> clear_all_assign(); $object -> setTables( $tables ); $object -> setConditions( $conditions ); if ( ! $object -> getDeleteSQL()){ echo $object -> Error; exit ;} else { $sql = $object -> Result; echo $sql . \" <br> \" ;} echo \" <b>Result Generate List</b><br> \" ; $fields = Array ( \" id \" , \" name \" , \" address \" , \" city \" ); $tables = Array ( \" customer \" ); $id = 1 ; $conditions [ 0 ][ \" condition \" ] = \" id=\'$id\' \" ; $conditions [ 0 ][ \" connection \" ] = \"\" ; $object -> clear_all_assign(); $object -> setFields( $fields ); $object -> setTables( $tables ); $object -> setConditions( $conditions ); if ( ! $object -> getQuerySQL()){ echo $object -> Error; exit ;} else { $sql = $object -> Result; echo $sql . \" <br> \" ;} echo \" <b>Result Generate List with search on all fields</b><br> \" ; $fields = Array ( \" id \" , \" name \" , \" address \" , \" city \" ); $tables = Array ( \" customer \" ); $id = 1 ; $search = \" Fadjar Nurswanto \" ; $object -> clear_all_assign(); $object -> setFields( $fields ); $object -> setTables( $tables ); $object -> setSearch( $search ); if ( ! $object -> getQuerySQL()){ echo $object -> Error; exit ;} else { $sql = $object -> Result; echo $sql . \" <br> \" ;} echo \" <b>Result Generate List with search on some fields</b><br> \" ; $fields = Array ( \" id \" , \" name \" , \" address \" , \" city \" ); $tables = Array ( \" customer \" ); $id = 1 ; $search = Array ( \" name \" => \" Fadjar Nurswanto \" , \" address \" => \" Tomang Raya \" ); $object -> clear_all_assign(); $object -> setFields( $fields ); $object -> setTables( $tables ); $object -> setSearch( $search ); if ( ! $object -> getQuerySQL()){ echo $object -> Error; exit ;} else { $sql = $object -> Result; echo $sql . \" <br> \" ;} ?>
类代码:
<?php /* Created By : Fadjar Nurswanto <fajr_n@rindudendam.net> DATE : 2006-08-02 PRODUCTNAME : class MyLibSQLGen PRODUCTVERSION : 1.0.0 DESCRIPTION : class yang berfungsi untuk menggenerate SQL DENPENCIES : */ class MyLibSQLGen { var $Result ; var $Tables = Array (); var $Values = Array (); var $Fields = Array (); var $Conditions = Array (); var $Condition ; var $LeftJoin = Array (); var $Search ; var $Sort = \" ASC \" ; var $Order ; var $Error ; function MyLibSQLGen(){} function BuildCondition() { $funct = \" BuildCondition \" ; $className = get_class ( $this ); $conditions = $this -> getConditions(); if ( ! $conditions ){ $this -> dbgDone( $funct ); return true ;} if ( ! is_array ( $conditions )) { $this -> Error = \" $className::$funct Variable conditions not Array \" ; return ; } for ( $i = 0 ; $i < count ( $conditions ); $i ++ ) { $this -> Condition .= $conditions [ $i ][ \" condition \" ] . \" \" . $conditions [ $i ][ \" connection \" ] . \" \" ; } return true ; } function BuildLeftJoin() { $funct = \" BuildLeftJoin \" ; $className = get_class ( $this ); if ( ! $this -> getLeftJoin()){ $this -> Error = \" $className::$funct Property LeftJoin was empty \" ; return ;} $LeftJoinVars = $this -> getLeftJoin(); $hasil = false ; foreach ( $LeftJoinVars as $LeftJoinVar ) { @ $hasil .= \" LEFT JOIN \" . $LeftJoinVar [ \" table \" ]; foreach ( $LeftJoinVar [ \" on \" ] as $var ) { @ $condvar .= $var [ \" condition \" ] . \" \" . $var [ \" connection \" ] . \" \" ; } $hasil .= \" ON ( \" . $condvar . \" ) \" ; unset ( $condvar ); } $this -> ResultLeftJoin = $hasil ; return true ; } function BuildOrder() { $funct = \" BuildOrder \" ; $className = get_class ( $this ); if ( ! $this -> getOrder()){ $this -> Error = \" $className::$funct Property Order was empty \" ; return ;} if ( ! $this -> getFields()){ $this -> Error = \" $className::$funct Property Fields was empty \" ; return ;} $Fields = $this -> getFields(); $Orders = $this -> getOrder(); if ( ereg ( \" , \" , $Orders )){ $Orders = explode ( \" , \" , $Order );} if ( ! is_array ( $Orders )){ $Orders = Array ( $Orders );} foreach ( $Orders as $Order ) { if ( ! is_numeric ( $Order )){ $this -> Error = \" $className::$funct Property Order not Numeric \" ; return ;} if ( $Order > count ( $this -> Fields)){ $this -> Error = \" $className::$funct Max value of property Sort is \" . count ( $this -> Fields); return ;} @ $xorder .= $Fields [ $Order ] . \" , \" ; } $this -> ResultOrder = \" ORDER BY \" . substr ( $xorder , 0 ,- 1 ); return true ; } function BuildSearch() { $funct = \" BuildSearch \" ; $className = get_class ( $this ); if ( ! $this -> getSearch()){ $this -> Error = \" $className::$funct Property Search was empty \" ; return ;} if ( ! $this -> getFields()){ $this -> Error = \" $className::$funct Property Fields was empty \" ; return ;} $Fields = $this -> getFields(); $xvalue = $this -> getSearch(); if ( is_array ( $xvalue )) { foreach ( $Fields as $field ) { if (@ $xvalue [ $field ]) { $Values = explode ( \" \" , $xvalue [ $field ]); foreach ( $Values as $Value ) { @ $hasil .= $field . \" LIKE \'% \" . $Value . \" %\' OR \" ; } if ( $hasil ) { @ $hasil_final .= \" ( \" . substr ( $hasil , 0 ,- 4 ) . \" ) AND \" ; unset ( $hasil ); } } } $hasil = $hasil_final ; } else { foreach ( $Fields as $field ) { $Values = explode ( \" \" , $xvalue ); foreach ( $Values as $Value ) { @ $hasil .= $field . \" LIKE \'% \" . $Value . \" %\' OR \" ; } } } $this -> ResultSearch = substr ( $hasil , 0 ,- 4 ); return true ; } function clear_all_assign() { $this -> Result = null ; $this -> ResultSearch = null ; $this -> ResultLeftJoin = null ; $this -> Result = null ; $this -> Tables = Array (); $this -> Values = Array (); $this -> Fields = Array (); $this -> Conditions = Array (); $this -> Condition = null ; $this -> LeftJoin = Array (); $this -> Sort = \" ASC \" ; $this -> Order = null ; $this -> Search = null ; $this -> fieldSQL = null ; $this -> valueSQL = null ; $this -> partSQL = null ; $this -> Error = null ; return true ; } function CombineFieldValue( $manual = false ) { $funct = \" CombineFieldsPostVar \" ; $className = get_class ( $this ); $fields = $this -> getFields(); $values = $this -> getValues(); if ( ! is_array ( $fields )) { $this -> Error = \" $className::$funct Variable fields not Array \" ; return ; } if ( ! is_array ( $values )) { $this -> Error = \" $className::$funct Variable values not Array \" ; return ; } if ( count ( $fields ) != count ( $values )) { $this -> Error = \" $className::$funct Count of fields and values not match \" ; return ; } for ( $i = 0 ; $i < count ( $fields ); $i ++ ) { @ $this -> fieldSQL .= $fields [ $i ] . \" , \" ; if ( $fields [ $i ] == \" pwd \" || $fields [ $i ] == \" password \" || $fields [ $i ] == \" pwd \" ) { @ $this -> valueSQL .= \" password(\' \" . $values [ $i ] . \" \'), \" ; @ $this -> partSQL .= $fields [ $i ] . \" =password(\' \" . $values [ $i ] . \" \'), \" ; } else { if ( is_numeric ( $values [ $i ])) { @ $this -> valueSQL .= $values [ $i ] . \" , \" ; @ $this -> partSQL .= $fields [ $i ] . \" = \" . $values [ $i ] . \" , \" ; } else { @ $this -> valueSQL .= \" \' \" . $values [ $i ] . \" \', \" ; @ $this -> partSQL .= $fields [ $i ] . \" =\' \" . $values [ $i ] . \" \', \" ; } } } $this -> fieldSQL = substr ( $this -> fieldSQL , 0 ,- 1 ); $this -> valueSQL = substr ( $this -> valueSQL , 0 ,- 1 ); $this -> partSQL = substr ( $this -> partSQL , 0 ,- 1 ); return true ; } function getDeleteSQL() { $funct = \" getDeleteSQL \" ; $className = get_class ( $this ); $Tables = $this -> getTables(); if ( ! $Tables || ! count ( $Tables )) { $this -> dbgFailed( $funct ); $this -> Error = \" $className::$funct Table was empty \" ; return ; } for ( $i = 0 ; $i < count ( $Tables ); $i ++ ) { @ $Table .= $Tables [ $i ] . \" , \" ; } $Table = substr ( $Table , 0 ,- 1 ); $sql = \" DELETE FROM \" . $Table ; if ( $this -> getConditions()) { if ( ! $this -> BuildCondition()){ $this -> dbgFailed( $funct ); return ;} $sql .= \" WHERE \" . $this -> getCondition(); } $this -> Result = $sql ; return true ; } function getInsertSQL() { $funct = \" getInsertSQL \" ; $className = get_class ( $this ); if ( ! $this -> getValues()){ $this -> Error = \" $className::$funct Property Values was empty \" ; return ;} if ( ! $this -> getFields()){ $this -> Error = \" $className::$funct Property Fields was empty \" ; return ;} if ( ! $this -> getTables()){ $this -> Error = \" $className::$funct Property Tables was empty \" ; return ;} if ( ! $this -> CombineFieldValue()){ $this -> dbgFailed( $funct ); return ;} $Tables = $this -> getTables(); $sql = \" INSERT INTO \" . $Tables [ 0 ] . \" ( \" . $this -> fieldSQL . \" ) VALUES ( \" . $this -> valueSQL . \" ) \" ; $this -> Result = $sql ; return true ; } function getUpdateSQL() { $funct = \" getUpdateSQL \" ; $className = get_class ( $this ); if ( ! $this -> getValues()){ $this -> Error = \" $className::$funct Property Values was empty \" ; return ;} if ( ! $this -> getFields()){ $this -> Error = \" $className::$funct Property Fields was empty \" ; return ;} if ( ! $this -> getTables()){ $this -> Error = \" $className::$funct Property Tables was empty \" ; return ;} if ( ! $this -> CombineFieldValue()){ $this -> dbgFailed( $funct ); return ;} if ( ! $this -> BuildCondition()){ $this -> dbgFailed( $funct ); return ;} $Tables = $this -> getTables(); $sql = \" UPDATE \" . $Tables [ 0 ] . \" SET \" . $this -> partSQL . \" WHERE \" . $this -> getCondition(); $this -> Result = $sql ; return true ; } function getQuerySQL() { $funct = \" getQuerySQL \" ; $className = get_class ( $this ); if ( ! $this -> getFields()){ $this -> Error = \" $className::$funct Property Fields was empty \" ; return ;} if ( ! $this -> getTables()){ $this -> Error = \" $className::$funct Property Tables was empty \" ; return ;} $Fields = $this -> getFields(); $Tables = $this -> getTables(); foreach ( $Fields as $Field ){@ $sql_raw .= $Field . \" , \" ;} foreach ( $Tables as $Table ){@ $sql_table .= $Table . \" , \" ;} $this -> Result = \" SELECT \" . substr ( $sql_raw , 0 ,- 1 ) . \" FROM \" . substr ( $sql_table , 0 ,- 1 ); if ( $this -> getLeftJoin()) { if ( ! $this -> BuildLeftJoins()){ $this -> dbgFailed( $funct ); return ;} $this -> Result .= \" \" . $this -> ResultLeftJoin; } if ( $this -> getConditions()) { if ( ! $this -> BuildCondition()){ $this -> dbgFailed( $funct ); return ;} $this -> Result .= \" WHERE ( \" . $this -> Condition . \" ) \" ; } if ( $this -> getSearch()) { if ( ! $this -> BuildSearch()){ $this -> dbgFailed( $funct ); return ;} if ( $this -> ResultSearch) { if ( eregi ( \" WHERE \" , $this -> Result)){ $this -> Result .= \" AND \" . $this -> ResultSearch;} else { $this -> Result .= \" WHERE \" . $this -> ResultSearch;} } } if ( $this -> getOrder()) { if ( ! $this -> BuildOrder()){ $this -> dbgFailed( $funct ); return ;} $this -> Result .= \" \" . $this -> ResultOrder; } if ( $this -> getSort()) { if (@ $this -> ResultOrder) { $this -> Result .= \" \" . $this -> getSort(); } } return true ; } function getCondition(){ return @ $this -> Condition;} function getConditions(){ if ( count (@ $this -> Conditions) && is_array (@ $this -> Conditions)){ return @ $this -> Conditions;}} function getFields(){ if ( count (@ $this -> Fields) && is_array (@ $this -> Fields)){ return @ $this -> Fields;}} function getLeftJoin(){ if ( count (@ $this -> LeftJoin) && is_array (@ $this -> LeftJoin)){ return @ $this -> LeftJoin;}} function getOrder(){ return @ $this -> Order;} function getSearch(){ return @ $this -> Search;} function getSort(){ return @ $this -> Sort ;} function getTables(){ if ( count (@ $this -> Tables) && is_array (@ $this -> Tables)){ return @ $this -> Tables;}} function getValues(){ if ( count (@ $this -> Values) && is_array (@ $this -> Values)){ return @ $this -> Values;}} function setCondition( $input ){ $this -> Condition = $input ;} function setConditions( $input ) { if ( is_array ( $input )){ $this -> Conditions = $input ;} else { $this -> Error = get_class ( $this ) . \" ::setConditions Parameter input not array \" ; return ;} } function setFields( $input ) { if ( is_array ( $input )){ $this -> Fields = $input ;} else { $this -> Error = get_class ( $this ) . \" ::setFields Parameter input not array \" ; return ;} } function setLeftJoin( $input ) { if ( is_array ( $input )){ $this -> LeftJoin = $input ;} else { $this -> Error = get_class ( $this ) . \" ::setFields Parameter input not array \" ; return ;} } function setOrder( $input ){ $this -> Order = $input ;} function setSearch( $input ){ $this -> Search = $input ;} function setSort( $input ){ $this -> Sort = $input ;} function setTables( $input ) { if ( is_array ( $input )){ $this -> Tables = $input ;} else { $this -> Error = get_class ( $this ) . \" ::setTables Parameter input not array \" ; return ;} } function setValues( $input ) { if ( is_array ( $input )){ $this -> Values = $input ;} else { $this -> Error = get_class ( $this ) . \" ::setValues Parameter input not array \" ; return ;} } } ?>
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP基于pdo操作数据库技巧总结》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php操作office文档技巧总结(包括word,excel,access,ppt)》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
本文地址:https://www.stayed.cn/item/25761
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我