Rev 177 | Rev 220 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/*QBPWCF, Quick Build PHP website Component base on Fedora Linux.Copyright (C) 2014~2025 Min-Jhin,ChenThis file is part of QBPWCF.QBPWCF is free software: you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation, either version 3 of the License, or(at your option) any later version.QBPWCF is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with QBPWCF. If not, see <http://www.gnu.org/licenses/>.*/namespace qbpwcf;/*類別說明:跟mysql/mariadb操作有關的類別備註:建議加上pdo的支援,以便無痛支援多種資料庫。https://www.php.net/manual/en/mysql.phphttps://www.php.net/manual/en/mysqlinfo.library.choosing.phphttps://blog.markgdi.com/article/quick-start-operation-mysql-using-php-pdo/*/class db{/*#函式說明:#當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#必填參數:#$method,物件,為物件實體或類別名稱,會自動置入該參數.#$arguments,陣列,為呼叫方法時所用的參數.#參考資料:#__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic*/public function __call($method,$arguments){#取得當前執行的函式$result["function"]=__FUNCTION__;#設置執行不正常$result["status"]="false";#設置執行錯誤$result["error"][]=__NAMESPACE__ ."/".$method."() 不存在!";#設置所丟入的參數$result["error"][]=$arguments;#回傳結果return $result;}#function __call end/*#函式說明:#當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#必填參數:#$method,物件,為物件實體或類別名稱,會自動置入該參數.#$arguments,陣列,為呼叫方法時所用的參數.#參考資料:#__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic*/public static function __callStatic($method,$arguments){#取得當前執行的函式$result["function"]=__FUNCTION__;#設置執行不正常$result["status"]="false";#設置執行錯誤$result["error"][]="欲呼叫的". __NAMESPACE__ ."/".$method."() 不存在!";#設置所丟入的參數$result["error"][]=$arguments;#回傳結果return $result;}#function __callStatic end/*#函式說明:#連線到mysql-server,會回傳一個陣列#回傳結果:#$result["status"],若連線成功則爲"true",連線失敗則爲"false"。#$result["function"],當前執行的函數名稱#$result["connectInformation"],爲回傳的mysql連線資訊。#$result["error"],爲錯誤訊息陣列#必填參數:#$conf["dbAddress"],字串,爲mysql-Server的位置。$conf["dbAddress"]=$dbAddress;#$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號。$conf["dbAccount"]=$dbAccount;#可省略參數:#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼。#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,為連線到mysql-Server時對應的port,預設不使用#$conf["dbPort"]="3306";#參考資料:#無.#備註:#無.*/public static function mysqlConnect(&$conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#$result["argu"],字串陣列,目前輸入的參數名稱陣列.#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.#$result["notNeedVar"],字串陣列,多餘的參數名稱.#必填參數:#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("dbAddress","dbAccount");#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可省略參數:#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("dbPassword","dbPort");#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null);#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();#參考資料:#array_keys=>http://php.net/manual/en/function.array-keys.php$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳解果return $result;}#if end#如果 $checkResult["status"]等於"false";if($checkResult["passed"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳解果return $result;}#if end#如果是 localhostif($conf["dbAddress"]==="localhost"){#卸除dbPort變數unset($conf["dbPort"]);}#if end#如果密碼爲空,則爲不使用密碼進行連綫if(!isset($conf["dbPassword"])){#如果沒設定 dbPortif(!isset($conf["dbPort"])){#設定資料庫位置與帳號,並連線#若連線失敗if(!($result["connectInformation"]=@mysqli_connect($conf["dbAddress"],$conf["dbAccount"]))){#設置連線失敗的提示$result["error"][]="連線失敗,請檢查帳號是否正確.";#取得連線時的錯誤編號$result["error"][]=mysqli_connect_errno();#取得連線時的錯誤訊息$result["error"][]=mysqli_connect_error();#設置執行失敗$result["status"]="false";#回傳結果return $result;}#if end}#if end#反之else{#設定資料庫位置與port與帳號,並連線#若連線失敗if(!($result["connectInformation"]=@mysqli_connect($conf["dbAddress"].":".$conf["dbPort"],$conf["dbAccount"]))){#設置連線失敗的提示$result["error"][]="連線失敗,請檢查帳號是否正確.";#取得連線時的錯誤編號$result["error"][]=mysqli_connect_errno();#取得連線時的錯誤訊息$result["error"][]=mysqli_connect_error();#設置執行失敗$result["status"]="false";#回傳結果return $result;}#if end}#else end}#if end#反之代表要使用密碼else{#如果沒設定 dbPortif(!isset($conf["dbPort"])){#設定資料庫位置、帳號、密碼,並連綫if(!($result["connectInformation"]=@mysqli_connect($conf["dbAddress"],$conf["dbAccount"],$conf["dbPassword"]))){#設置連線失敗的提示$result["error"][]="連線失敗,請檢查帳號密碼是否正確.";#取得連線時的錯誤編號$result["error"][]=mysqli_connect_errno();#取得連線時的錯誤訊息$result["error"][]=mysqli_connect_error();#設置執行失敗$result["status"]="false";#回傳結果return $result;}#if end}#if end#反之else{#設定資料庫位置、帳號、密碼,並連綫if(!($result["connectInformation"]=@mysqli_connect($conf["dbAddress"].":".$conf["dbPort"],$conf["dbAccount"],$conf["dbPassword"]))){#設置連線失敗的提示$result["error"][]="連線失敗,請檢查帳號密碼是否正確.";#取得連線時的錯誤編號$result["error"][]=mysqli_connect_errno();#取得連線時的錯誤訊息$result["error"][]=mysqli_connect_error();#設置執行失敗$result["status"]="false";#回傳結果return $result;}#if end}#else end}#else end#使編碼為utf8if(!(mysqli_query($result["connectInformation"],'SET NAMES UTF8'))){#設置連線編碼失敗的提示$result["error"][]="設置連線編碼失敗.";#取得連線時的錯誤編號$result["error"][]=mysqli_connect_errno();#取得連線時的錯誤訊息$result["error"][]=mysqli_connect_error();#設置執行失敗$result["status"]="false";#回傳結果return $result;}#if end#設定 CHARACTER_SET_CLIENT 為 utf8if(!(mysqli_query($result["connectInformation"],'SET CHARACTER_SET_CLIENT=utf8'))){#設置連線編碼失敗的提示$result["error"][]="設置連線編碼失敗.";#取得連線時的錯誤編號$result["error"][]=mysqli_connect_errno();#取得連線時的錯誤訊息$result["error"][]=mysqli_connect_error();#設置執行失敗$result["status"]="false";#回傳結果return $result;}#if end#設定 CHARACTER_SET_RESULTS 為 utf8if(!(mysqli_query($result["connectInformation"],'SET CHARACTER_SET_RESULTS=utf8'))){#設置連線編碼失敗的提示$result["error"][]="設置連線編碼失敗.";#取得連線時的錯誤編號$result["error"][]=mysqli_connect_errno();#取得連線時的錯誤訊息$result["error"][]=mysqli_connect_error();#設置執行失敗$result["status"]="false";#回傳結果return $result;}#if end#執行正常$result["status"]="true";#回傳結果return $result;}#function mysqlConnect end/*#函式說明:#關閉與mysql的連線,會回傳一個陣列。#回傳結果::#$result["status"],若連線成功則爲"true",連線失敗則爲"false".#$result["connectInformation"],爲回傳的mysql連線資訊。#$result["error"],爲錯誤訊息陣列.#必填參數:#$conf["mysqli"],字串,mysqli物件.$conf["mysqli"]=$mysqli;#可省略參數:#無.#參考資料:#無.#備註:#無.*/public static function mysqlClose(&$conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#$result["argu"],字串陣列,目前輸入的參數名稱陣列.#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.#$result["notNeedVar"],字串陣列,多餘的參數名稱.#必填參數:#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("mysqli");#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array(null);#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可省略參數:#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。#$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("dbPassword","dbPort");#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null);#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();#參考資料:#array_keys=>http://php.net/manual/en/function.array-keys.php$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳解果return $result;}#if end#如果 $checkResult["status"]等於"false";if($checkResult["passed"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳解果return $result;}#if end#關閉與資料庫的連線如果成功if(@mysqli_close($conf["mysqli"])){#則回傳"true"$result["status"]="true";}#if end#連線失敗回傳"false"else{#設置連線編碼失敗的提示$result["error"][]="關閉連線失敗.";#取得連線時的錯誤編號$result["error"][]=mysqli_connect_errno();#取得連線時的錯誤訊息$result["error"][]=mysqli_connect_error();#設置執行失敗$result["status"]="false";}#else end#儲存mysqli物件$result["connectInformation"]=$conf["mysqli"];#設置執行正常$result["status"]="true";#回傳結果return $result;}#funciton mysqlClose end/*#函式說明:#連線到資料庫,結果會回傳一個陣列.#$result["status"],若連線成功則爲"true",連線失敗則爲"false".#$result["connectInformation"],爲回傳的mysql連線資訊.#$result["error"],錯誤訊息 .#$result["function"],當前執行的函數名稱.#必填參數:#$conf["dbAddress"],字串,爲mysql-Server的位置。$conf["dbAddress"]=$dbAddress;#$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號。$conf["dbAccount"]=$dbAccount;#$conf["dbName"],字串,爲要連的資料庫名稱$conf["dbName"]="";#可省略參數:#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼。#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,為連線到mysql-Server時對應的port,可省略,預設為3306.#$conf["dbPort"]="3306";#參考資料:#無.#備註:#無.*/public static function dbConnect(&$conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#$result["argu"],字串陣列,目前輸入的參數名稱陣列.#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.#$result["notNeedVar"],字串陣列,多餘的參數名稱.#必填參數:#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("dbAddress","dbAccount","dbName");#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可省略參數:#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("dbPassword","dbPort");#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null);#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();#參考資料:#array_keys=>http://php.net/manual/en/function.array-keys.php$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果檢查失敗if($checkResult["status"]==="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳解果return $result;}#if end#如果 $checkResult["status"]等於"false";if($checkResult["passed"]==="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳解果return $result;}#if end#函式說明:#連線到mysql-server,會回傳一個陣列#回傳結果:#$result["status"],若連線成功則爲"true",連線失敗則爲"false"。#$result["function"],當前執行的函數名稱#$result["connectInformation"],爲回傳的mysql連線資訊。#$result["error"],爲錯誤訊息陣列#必填參數:$conf["db"]["mysqlConnect"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置。$conf["db"]["mysqlConnect"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號。#可省略參數:#如果 $conf["dbPassword"] 有設定if(isset($conf["dbPassword"])){$conf["db"]["mysqlConnect"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼。}#if end#如果有設置 $conf["dbPort"]if(isset($conf["dbPort"])){$conf["db"]["mysqlConnect"]["dbPort"]=$conf["dbPort"];#字串,為連線到mysql-Server時對應的port,可省略,預設為3306.}#if end$con=db::mysqlConnect($conf["db"]["mysqlConnect"]);unset($conf["db"]["mysqlConnect"]);#如果連線失敗if($con["status"]==="false"){#提示訊息$result["error"]=$con;#設置執行失敗$result["status"]="false";#回傳結果return $result;}#if end#確認資料庫存在或可以被存取#函式說明:#執行mysql指令#回傳結果::#$result["status"],"true"為執行成功;"false"為執行失敗。#$result["error"],錯誤訊息的陣列#$result["function"],當前執行的涵式#$result["queryResource"],mysql查詢後的resource資源,用於給mysql解析的資源變數。#$result["queryConn"],mysql用來查尋的連資源.#$result["queryString"],要執行的sql內容.#必填參數:#$conf["dbSql"],字串,要執行sql語法$conf["db::execMysqlQuery"]["dbSql"]="show databases;";#可省略參數:#$conf["dbLink"],物件,mysqli物件,由mysqli_connect()回傳的物件內容,若為數值則改用賬號密碼等資訊進行連線,反之則沿用連線物件.#$conf["db::execMysqlQuery"]["dbLink"]=$conf["dbName"];#$conf["dbAddress"],字串,爲mysql-Server的位置。$conf["db::execMysqlQuery"]["dbAddress"]=$conf["dbAddress"];#$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號。$conf["db::execMysqlQuery"]["dbAccount"]=$conf["dbAccount"];#如果存在 $dbPasswordif(isset($conf["dbPassword"])){#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼。$conf["db::execMysqlQuery"]["dbPassword"]=$conf["dbPassword"];}#if end#$conf["dbName"],字串,爲要連的資料庫名稱#$conf["dbName"]="";#如果存在 $dbPortif(isset($conf["dbPort"])){#$conf["dbPort"],字串,為連線到mysql-Server時對應的port,可省略,預設為3306.$conf["db::execMysqlQuery"]["dbPort"]=$conf["dbPort"];}#if end#$conf["autoClose"],字串,"true"代表要自動斷線,預設為"true"會自動斷線#$conf["autoClose"]="true";#參考資料:#無.#備註:#無.$execMysqlQuery=db::execMysqlQuery($conf["db::execMysqlQuery"]);unset($conf["db::execMysqlQuery"]);#如果執行失敗if($execMysqlQuery["status"]==="false"){#設置連線失敗的提示$result["error"][]="檢查資料庫可否存取出錯";#設置錯誤訊息$result["error"][]=$execMysqlQuery["error"];#設置執行失敗$result["status"]="false";#回傳結果return $result;}#if end#解析 $execMysqlQuery["queryResource"] 看是否存在要存取的資料庫#函式說明:#解析 dataTableSelect($conf) 後的結果,亦即將執行sql語法後所得到的結果解析放進變數裏面#回傳結果:#$result["status"],執行結果"true"為成功;"false"為失敗#$result["error"],錯誤訊息#$result["function"],儲存當前函數名稱#$result["dataColumnName"],為資料欄位的名稱陣列.#$result["dataColumnName"][$i]代表第一個欄位名稱.#$result["dataContent"],爲資料的內容陣列,第1維度的key為$conf["tableValueName"][$i],亦即第 $i+1 個欄位的名稱,若該欄位不存在,則其value為空字串;第2維度的key為第$i+1筆資料的索引.#$result["dataCount"],爲取得的資料筆數.#必填參數:#$conf["sqlQueryResult"],object,爲執行sql語法所獲得的查詢結果。$conf["db::sendQueryDataToVariabele"]["sqlQueryResult"]=$execMysqlQuery["queryResource"];#$conf["tableValueName"],字串陣列,爲該資料表列項目的每一項名稱,須爲陣列值,若為「array("*")」則代表所有欄位.$conf["db::sendQueryDataToVariabele"]["tableValueName"]=array("Database");#可省略參數:#$conf["dbAddress"],字串,爲mysql-Server的位置,目前沒有用途.#$conf["dbAddress"]=$dbAddress;#$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號,目前沒有用途.#$conf["dbAccount"]=$dbAccount;#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼,目前沒有用途.#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,可省略,若省略則代表使用預設的3306 port,目前沒有用途.#$conf["dbPort"]="";#$conf["valueName"],字串陣列,爲該資料表列項目的每一項所要對應的變數名稱,預設為欄位的名稱($conf["tableValueName"]).#$conf["valueName"]=$conf["tableValueName"];#參考資料:#http://www.w3school.com.cn/php/func_mysql_fetch_array.asp => 解析取得的資料表欄位時,能夠選擇回傳含有欄位名稱與數字代表的key.#備註:#無.$sendQueryDataToVariabele=db::sendQueryDataToVariabele($conf["db::sendQueryDataToVariabele"]);unset($conf["db::sendQueryDataToVariabele"]);#如果執行異常if($sendQueryDataToVariabele["status"]==="false"){#設置連線失敗的提示$result["error"][]="檢查資料庫可否存取出錯";#設置錯誤訊息$result["error"][]=$sendQueryDataToVariabele["error"];#設置執行失敗$result["status"]="false";#回傳結果return $result;}#if end#檢查資料庫是否可以存取#函式說明:#檢查一個數值是否與陣列裏面的元素相同,找到一個相符合的元素後就會停止搜尋.#回傳結果:#$result["status"],"true"表示執行正確,"false"表示執行錯誤.#$result["founded"],"true"表示有找到相同的,"false"表示沒有找到相同的.#$result["error"],錯誤訊息#$result["function"],當前執行的函數名稱#$result["argv"],使用的參數#$result["equalVarName"],相等的變數名稱或key.#$result["equalVarValue"],相等的變數數值內容.#必填參數:#$conf["conditionElement"],字串,條件元素,要等於的元素內容.$conf["search::getEqualVar"]["conditionElement"]=$conf["dbName"];#$conf["compareElements"],字串陣列,要比對的陣列變數內容.$conf["search::getEqualVar"]["compareElements"]=$sendQueryDataToVariabele["dataContent"]["Database"];#可省略參數:#無.#參考資料:#無.#備註:#無.$getEqualVar=search::getEqualVar($conf["search::getEqualVar"]);unset($conf["search::getEqualVar"]);#如果執行失敗if($getEqualVar["status"]==="false"){#設置錯誤的提示$result["error"][]="檢查資料庫可否存取出錯";#設置錯誤訊息$result["error"][]=$sendQueryDataToVariabele["error"];#設置執行失敗$result["status"]="false";#回傳結果return $result;}#if end#如果無法存取資料庫if($getEqualVar["founded"]==="false"){#設置錯誤的提示$result["error"][]="資料庫(".$conf["dbName"].")無法存取";#設置錯誤訊息$result["error"][]=$sendQueryDataToVariabele;#設置執行失敗$result["status"]="false";#回傳結果return $result;}#if end#選取資料庫#如果連線失敗if(!(mysqli_select_db($con["connectInformation"],$conf["dbName"]))){#設置連線失敗的提示$result["error"][]="選取資料庫失敗";#取得連線時的錯誤編號$result["error"][]=mysqli_connect_errno();#取得連線時的錯誤訊息$result["error"][]=mysqli_connect_error();#設置執行失敗$result["status"]="false";#回傳結果return $result;}#if end#取得mysqli物件$result["connectInformation"]=$con["connectInformation"];#設置執行正常$result["status"]="true";#回傳結果return $result;}#function dbConnect end/*#函式說明:#執行mysql指令#回傳結果::#$result["status"],"true"為執行成功;"false"為執行失敗。#$result["error"],錯誤訊息的陣列#$result["function"],當前執行的涵式#$result["queryResource"],mysql查詢後的resource資源,用於給mysql解析的資源變數。#$result["queryConn"],mysql用來查尋的連資源.#$result["queryString"],要執行的sql內容.#必填參數:#$conf["dbSql"],字串,要執行sql語法$conf["dbSql"]="";#可省略參數:#$conf["dbLink"],物件,mysqli物件,由mysqli_connect()回傳的物件內容,若為數值則改用賬號密碼等資訊進行連線,反之則沿用連線物件.$conf["dbLink"]="";#$conf["dbAddress"],字串,爲mysql-Server的位置。$conf["dbAddress"]=$dbAddress;#$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號。$conf["dbAccount"]=$dbAccount;#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼。#$conf["dbPassword"]=$dbPassword;#$conf["dbName"],字串,爲要連的資料庫名稱#$conf["dbName"]="";#$conf["dbPort"],字串,為連線到mysql-Server時對應的port,可省略,預設為3306.#$conf["dbPort"]="3306";#$conf["autoClose"],字串,"true"代表要自動斷線,預設為"true"會自動斷線#$conf["autoClose"]="true";#參考資料:#無.#備註:#無.*/public static function execMysqlQuery(&$conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf===null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#$result["argu"],字串陣列,目前輸入的參數名稱陣列.#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.#$result["notNeedVar"],字串陣列,多餘的參數名稱.#必填參數:#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("dbSql");#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可省略參數:#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("dbLink","dbAddress","dbAccount","dbPassword","dbName","dbPort","autoClose","mysqli");#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("object","string","string","string","string","string","string",null);#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null,null,null,null,null,"true",null);#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();#參考資料:#array_keys=>http://php.net/manual/en/function.array-keys.php$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置錯誤識別$result["status"]="fasle";#設置錯誤訊息$result["error"]=$checkResult;#回傳解果return $result;}#if end#如果 $checkResult["status"]等於"false";if($checkResult["passed"]==="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳解果return $result;}#if end#如果沒有 dbLinkif(!isset($conf["dbLink"])){#初始化儲存mysqli物件的變數$con="";#如果有指定資料庫if(isset($conf["dbName"])){#函式說明:#連線到資料庫,結果會回傳一個陣列.#$result["status"],若連線成功則爲"true",連線失敗則爲"false".#$result["connectInformation"],爲回傳的mysql連線資訊.#$result["error"],錯誤訊息 .#$result["function"],當前執行的函數名稱.#必填參數:$conf["db::dbConnect"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db::dbConnect"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db::dbConnect"]["dbName"]=$conf["dbName"];#爲要連的資料庫名稱#可省略參數:#如果 $conf["dbPassword"] 有設置if(isset($conf["dbPassword"])){$conf["db::dbConnect"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼。}#if end#如果有設置 $conf["dbPort"]if(isset($conf["dbPort"])){#$conf["dbPort"],字串,為連線到mysql-Server時對應的port,可省略,預設為3306.$conf["db::dbConnect"]["dbPort"]=$conf["dbPort"];}#if end$con=db::dbConnect($conf["db::dbConnect"]);unset($conf["db::dbConnect"]);#如果連線失敗if($con["status"]=="false"){#設置執行失敗的訊息$result["status"]="false";#紀錄錯誤訊息$result["error"]=$con;#回傳結果return $result;}#if end#儲存mysqli物件$result["queryConn"]=$con["connectInformation"];#解析可以取得的資料庫清單#函式說明:#解析 dataTableSelect($conf) 後的結果,亦即將執行sql語法後所得到的結果解析放進變數裏面#回傳結果:#$result["status"],執行結果"true"為成功;"false"為失敗#$result["error"],錯誤訊息#$result["function"],儲存當前函數名稱#$result["dataColumnName"],為資料欄位的名稱陣列.#$result["dataColumnName"][$i]代表第一個欄位名稱.#$result["dataContent"],爲資料的內容陣列,第1維度的key為$conf["tableValueName"][$i],亦即第 $i+1 個欄位的名稱,若該欄位不存在,則其value為空字串;第2維度的key為第$i+1筆資料的索引.#$result["dataCount"],爲取得的資料筆數.#必填參數:#$conf["sqlQueryResult"],object,爲執行sql語法所獲得的查詢結果。$conf["db::sendQueryDataToVariabele"]["sqlQueryResult"]=$result["queryConn"];#$conf["tableValueName"],字串陣列,爲該資料表列項目的每一項名稱,須爲陣列值,若為「array("*")」則代表所有欄位.$conf["db::sendQueryDataToVariabele"]["tableValueName"]=array("Database");#可省略參數:#$conf["dbAddress"],字串,爲mysql-Server的位置,目前沒有用途.$conf["db::sendQueryDataToVariabele"]["dbAddress"]=$dbAddress;#$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號,目前沒有用途.$conf["db::sendQueryDataToVariabele"]["dbAccount"]=$dbAccount;#如果有設置 $conf["dbPassword"]if(isset($conf["dbPassword"])){#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼,目前沒有用途.$conf["db::sendQueryDataToVariabele"]["dbPassword"]=$dbPassword;}#if end#如果有設置 $conf["dbPort"]if(isset($conf["dbPort"])){#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,可省略,若省略則代表使用預設的3306 port,目前沒有用途.$conf["db::sendQueryDataToVariabele"]["dbPort"]=$conf["dbPort"];}#if end#$conf["valueName"],字串陣列,爲該資料表列項目的每一項所要對應的變數名稱,預設為欄位的名稱($conf["tableValueName"]).#$conf["valueName"]=$conf["tableValueName"];#參考資料:#http://www.w3school.com.cn/php/func_mysql_fetch_array.asp => 解析取得的資料表欄位時,能夠選擇回傳含有欄位名稱與數字代表的key.#備註:#無.$sendQueryDataToVariabele=db::sendQueryDataToVariabele($conf["db::sendQueryDataToVariabele"]);unset($conf["db::sendQueryDataToVariabele"]);#如果連線失敗if($sendQueryDataToVariabele["status"]==="false"){#設置執行失敗的訊息$result["status"]="false";#紀錄錯誤訊息$result["error"]=$sendQueryDataToVariabele;#回傳結果return $result;}#if end#尋找目標資料庫是否存在#函式說明:#檢查一個數值是否與陣列裏面的元素相同,找到一個相符合的元素後就會停止搜尋.#回傳結果:#$result["status"],"true"表示執行正確,"false"表示執行錯誤.#$result["founded"],"true"表示有找到相同的,"false"表示沒有找到相同的.#$result["error"],錯誤訊息#$result["function"],當前執行的函數名稱#$result["argv"],使用的參數#$result["equalVarName"],相等的變數名稱或key.#$result["equalVarValue"],相等的變數數值內容.#必填參數:#$conf["conditionElement"],字串,條件元素,要等於的元素內容.$conf["search::getEqualVar"]["conditionElement"]=$conf["dbName"];#$conf["compareElements"],字串陣列,要比對的陣列變數內容.$conf["search::getEqualVar"]["compareElements"]=$result["dataContent"]["Database"];#可省略參數:#無.#參考資料:#無.#備註:#無.$getEqualVar=search::getEqualVar($conf["search::getEqualVar"]);unset($conf["search::getEqualVar"]);#如果連線失敗if($getEqualVar["status"]==="false"){#設置執行失敗的訊息$result["status"]="false";#紀錄錯誤訊息$result["error"]=$getEqualVar;#回傳結果return $result;}#if end#如果不存在if($getEqualVar["founded"]==="false"){#設置執行失敗的訊息$result["status"]="false";#紀錄錯誤訊息$result["error"][]="目標資料庫 ".$conf["dbName"]." 不存在";#紀錄錯誤訊息$result["error"][]=$getEqualVar;#回傳結果return $result;}#if end}#if end#反之沒有指定資料庫else{#連線到mysql#函式說明:#連線到mysql-server,會回傳一個陣列#回傳結果:#$result["connectStatus"],若連線成功則爲0,連線失敗則爲1。#$result["connectInformation"],爲回傳的mysql連線資訊。#$result["error"],爲錯誤訊息#必填參數:$conf["db"]["mysqlConnect"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置。$conf["db"]["mysqlConnect"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號。#可省略參數:#如果 $conf["dbPassword"] 有設置if(isset($conf["dbPassword"])){$conf["db"]["mysqlConnect"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼。}#if end#如果有設置 $conf["dbPort"]if(isset($conf["dbPort"])){#$conf["dbPort"],字串,為連線到mysql-Server時對應的port,可省略,預設為3306.$conf["db::dbConnect"]["dbPort"]=$conf["dbPort"];}#if end$con=db::mysqlConnect($conf["db"]["mysqlConnect"]);unset($conf["db"]);#如果連線失敗if($con["status"]==="false"){#設置執行失敗的訊息$result["status"]="false";#紀錄錯誤訊息$result["error"]=$con;#回傳結果return $result;}#if end#debug#var_dump(__LINE__,$con);#儲存mysqli物件$result["queryConn"]=$con["connectInformation"];}#else end}#if end#反之存在 $conf["dbLink"]else{#取得db物件$result["queryConn"]=$conf["dbLink"];}#else end#設置sql的查詢語言$result["queryStringOri"]=$conf["dbSql"];#設置sql的查詢語言$result["queryString"]=$conf["dbSql"];#debug#var_dump(__LINE__,$result["queryString"]);#進行查詢#如果有錯誤訊息if(!($mysqli_query=mysqli_query($result["queryConn"],$result["queryString"]))){#設置執行失敗的訊息$result["status"]="false";#設置提示執行mysql語法失敗$result["error"][]="執行mysql語法失敗";#取得錯誤訊息$result["error"]["mysqlErrorNo"]=mysqli_errno($result["queryConn"]);$result["error"]["mysqlErrorDetail"]=mysqli_error($result["queryConn"]);#回傳結果return $result;}#if end#取得正確的mysqli_resource$result["queryResource"]=$mysqli_query;#如果要自動斷線if($conf["autoClose"]==="true"){#連線結束#函式說明:#關閉與mysql的連線,會回傳一個陣列。#回傳結果::#$result["status"],若連線成功則爲"true",連線失敗則爲"false".#$result["connectInformation"],爲回傳的mysql連線資訊。#$result["error"],爲錯誤訊息陣列.#必填參數:#$conf["mysqli"],字串,mysqli物件.$conf["db::mysqlClose"]["mysqli"]=$result["queryConn"];$mysqlClose=db::mysqlClose($conf["db::mysqlClose"]);unset($conf["db::mysqlClose"]);#如果關閉mysql連線失敗if($mysqlClose["status"]=="false"){#設置執行失敗的訊息$result["status"]="false";#紀錄錯誤訊息$result["error"]=$mysqlClose;#回傳結果return $result;}#if end}#if end#設置執行成功的訊息$result["status"]="true";#回傳查詢後的結果return $result;}#function execMysqlQuery end/*#函式說明:#用shell執行mysql指令.#回傳結果::#$result["status"],"true"為執行成功;"false"為執行失敗。#$result["error"],錯誤訊息的陣列#$result["function"],當前執行的涵式#$result["queryString"],mysql查詢的語言.#必填參數:#$conf["fileArgu"],字串,變數__FILE__的內容.$conf["fileArgu"]=__FILE__;#$conf["dbSql"],字串,要執行sql語法$conf["dbSql"]="";#$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號。$conf["dbAccount"]=$dbAccount;#可省略參數:#$conf["dbAddress"],字串,爲mysql-Server的位置,若設置為"localhost",則會忽略,預設為不指定,會嘗試透過unix domain socket來存取資料庫.#$conf["dbAddress"]=$dbAddress;#$conf["pre"],陣列,要在本指令前執行的每個指令與參數.$conf["pre"][$i]["cmd"],字串,要在本指令前執行的第$i+1個指令.$conf["pre"][$i]["param"],陣列字串,要在本指令前執行的第$i+1個指令的參數.#$conf["pre"]=array();#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼。#$conf["dbPassword"]=$dbPassword;#$conf["dbName"],字串,爲要連的資料庫名稱#$conf["dbName"]="";#$conf["dbPort"],字串,為連線到mysql-Server時對應的port,可省略,預設為3306.#$conf["dbPort"]="3306";#參考資料:#無.#備註:#無.*/public static function shell(&$conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf===null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#$result["argu"],字串陣列,目前輸入的參數名稱陣列.#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.#$result["notNeedVar"],字串陣列,多餘的參數名稱.#必填參數:#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("fileArgu","dbSql","dbAccount");#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可省略參數:#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("pre","dbAddress","dbPassword","dbName","dbPort");#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array","string","string","string","string");#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null,null,null,"3306");#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();#參考資料:#array_keys=>http://php.net/manual/en/function.array-keys.php$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳解果return $result;}#if end#如果 $checkResult["status"]等於"false";if($checkResult["passed"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳解果return $result;}#if end#避免亂碼$sql="SET NAMES UTF8;"."SET CHARACTER_SET_CLIENT=utf8;"."SET CHARACTER_SET_RESULTS=utf8;".$conf["dbSql"];#初始化參數$argu=array();#精簡的參數$argu[]=$sql;$argu[]="|";$argu[]="mysql";$argu[]="-u";$argu[]=$conf["dbAccount"];#如果有設置 $conf["dbPassword"]if(isset($conf["dbPassword"])){#加上密碼參數$argu[]="-p".$conf["dbPassword"];}#if end#如果有指定 dbAddressif(isset($conf["dbAddress"])){#如果不為 localhostif($conf["dbAddress"]!=="localhost"){#加上 位置參數$argu[]="-h".$conf["dbAddress"];}#if end}#if end#如果有設置 $conf["dbName"]if(isset($conf["dbName"])){#加上資料庫名稱參數$argu[]=$conf["dbName"];}#if end#函式說明:#呼叫shell執行系統命令,並取得回傳的內容.#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列.#$result["function"],當前執行的函數名稱.#$result["argu"],使用的參數.#$result["cmd"],執行的指令內容.#$result["fullCmd"],如果參數 $conf["inBackGround"] 為 "true" 則會回傳該值.#$result["output"],爲執行完二元碼後的輸出陣列,若 $conf["inBackGround"] 為 "true",則為當下的輸出.#$result["tmpFileOutput"],儲存輸出的暫存檔案名稱,若 $conf["inBackGround"] 為 "true" 則會回傳該值.#$result["running"],是否還在執行.#$result["pid"],pid.#$result["statusCode"],執行結束後的代碼.#必填的參數#$conf["command"],字串,要執行的指令與.$conf["external::callShell"]["command"]="echo";#$conf["fileArgu"],字串,變數__FILE__的內容.$conf["external::callShell"]["fileArgu"]=$conf["fileArgu"];#可省略參數:#$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.$conf["external::callShell"]["argu"]=$argu;#$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").#$conf["arguIsAddr"]=array();#如果有參數if(count($argu)>0){#$conf["thereIsShellVar"],陣列字串,指令搭配的參數"argu",若含有「\'」,則取代為「"」.每個argu參數都要有對應的元素."true"代表要置換.$conf["external::callShell"]["thereIsShellVar"]=array();#針對每個參數for($i=0;$i<count($argu);$i++){#第一個參數if($i===0){#含有shell變數$conf["external::callShell"]["thereIsShellVar"][$i]="true";}#if end#反之else{#不含有shell變數$conf["external::callShell"]["thereIsShellVar"][$i]="false";}#else}#for end}#if end#如果有設置 preif(isset($conf["pre"])){#$conf["pre"],陣列,要在本指令前執行的每個指令與參數.#$conf["pre"][$i]["cmd"],字串,要在本指令前執行的第$i+1個指令.#$conf["pre"][$i]["param"],陣列字串,要在本指令前執行的第$i+1個指令的參數.$conf["external::callShell"]["pre"]=$conf["pre"];}#if end#$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".#$conf["enablePrintDescription"]="true";#$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容加上使用的$conf["argu"]參數.#$conf["printDescription"]="";#$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"false".$conf["external::callShell"]["escapeshellarg"]="true";#$conf["username"],字串,要用什麼使用者來執行,預設為執行php的使用者,該參數不適用於apache環境.#$conf["username"]="";#$conf["password"],字串,root的使用者密碼,預設不使用密碼,該參數不適用於apache環境.#$conf["password"]="";#$conf["useScript"],字串,是否要啟用Linux的script指令來記錄輸出,"true"代表要,Fedora的selinux會擋住該操作;"false"代表不要,預設為"false".#$conf["useScript"]="";#$conf["logFilePath"],字串,當 $conf["useScript"] 為 "true" 時,輸出的內容要暫存到哪裡,預設為 "/tmp/.qbpwcf_tmp/external/callShell/".#$conf["logFilePath"]=".qbpwcf_tmp/external/callShell/";#$conf["inBackGround"],字串,是否要在背景執行,且不會等待程式執行結束再執行下一個指令,"true"代表是,"false"代表不要,預設為"false",如果$conf["command"]有用「;」區隔的多個指令將會出錯.#$conf["inBackGround"]="";#$conf["getErr"],字串,"true"代表將錯誤輸出變成標準輸出,反之"false"為不變動.#$conf["getErr"]="false";#$conf["doNotRun"],字串,"true"代表不執行指令,預設為"false"會執行指令.$conf["external::callShell"]["doNotRun"]="true";#備註:#不是所有指令都能用apache的身份執行,目前已知java,javac指令無法執行,使用root身份可能會被selinux阻擋.#參考資料:#exec=>http://php.net/manual/en/function.exec.php#escapeshellcmd=>http://php.net/manual/en/function.escapeshellcmd.php#escapeshellarg=>http://php.net/manual/en/function.escapeshellarg.php$callShell=external::callShell($conf["external::callShell"]);unset($conf["external::callShell"]);#debug#var_dump(__LINE__,$callShell);#如果檢查參數作業出錯if($callShell["status"]=="false"){#設置執行錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$callShell;#回傳結果return $result;}#if end#函式說明:#連線到 unixDomainSockServer 提供的 unix domain socket.#回傳結果:#$result["status"],"true"代表執行正常;"false"代表執行不正常.#$result["error"],錯誤訊息陣列.#$result["function"],當前執行的函式名稱.#$result["content"],取得的回應.#必填參數:#$conf["sock"],字串,要連線的unix domain socket.$conf["sock::unixDomainSockClient"]["sock"]=qbpwcf_usock_path;#可省略參數:#$conf["id"],字串,取得的id,若無此值,則會得到新的數值.#$conf["id"]="";#$conf["cmd"],字串,要執行的指令,當$conf["id"]參數合法時,才會執行.$conf["sock::unixDomainSockClient"]["cmd"]=$callShell["escape"]["cmd"];#$conf["param"],參數陣列.$conf["sock::unixDomainSockClient"]["param"]=$callShell["escape"]["argu"];#$conf["escaped"],字串,param參數是否已經escaped了,預設為"false",反之為"true".$conf["sock::unixDomainSockClient"]["escaped"]="true";#$conf["clear"],字串,設為"true"代表要清除過期的用戶連線.#$conf["clear"]="true";#參考資料:#http://php.net/manual/en/function.stream-socket-client.php#http://php.net/manual/en/function.stream-get-contents.php#備註:#無.$paramsOfUnixDomainSockClient=$conf["sock::unixDomainSockClient"];$unixDomainSockClient=sock::unixDomainSockClient($conf["sock::unixDomainSockClient"]);unset($conf["sock::unixDomainSockClient"]);#如果執行失敗if($unixDomainSockClient["status"]==="false"){#設置執行錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$unixDomainSockClient;#回傳結果return $result;}#if end#取得json回應$jsonRes=json_decode($unixDomainSockClient["content"]);#如果執行失敗if($jsonRes===null){#設置執行錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$unixDomainSockClient;#回傳結果return $result;}#if end#如果沒有產生新idif(!isset($jsonRes->id)){#設置執行錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$unixDomainSockClient;#回傳結果return $result;}#if end#用新的id再傳送一次要求給 qbpwcf_usock_path$paramsOfUnixDomainSockClient["id"]=$jsonRes->id;$unixDomainSockClient=sock::unixDomainSockClient($paramsOfUnixDomainSockClient);unset($paramsOfUnixDomainSockClient);#var_dump($unixDomainSockClient);#如果執行失敗if($unixDomainSockClient["status"]==="false"){#設置執行錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$unixDomainSockClient;#回傳結果return $result;}#if end#執行正常$result["status"]="true";#設置執行的結果$result["content"]=$unixDomainSockClient;#回傳結果return $result;}#function shell end/*#函式說明:#建立資料庫,會回傳一個陣列。#回傳結果:#$result["status"],成功爲"true",失敗爲"false".#$result["error"],錯誤訊息.#$result["function"],當前執行的函數名稱.#必填參數:#$conf["dbAddress"],字串,爲mysql-Server的位置。$conf["dbAddress"]=$dbAddress;#$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號。$conf["dbAccount"]=$dbAccount;#$conf["newDatabaseName"],字串,爲要新增的資料庫名稱.$conf["newDatabaseName"]="";#可省略參數:#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼。#$conf["dbPassword"]=$dbPassword;#$conf["dbName"],字串,爲要連的資料庫名稱#$conf["dbName"]="";#$conf["dbPort"],字串,為連線到mysql-Server時對應的port,預設為3306.#$conf["dbPort"]="3306";#參考資料:#maraiDB-createDatabase => https://mariadb.com/kb/en/mariadb/mariadb-documentation/data-types/string-data-types/data-types-character-sets-and-collations/setting-character-sets-and-collations/#備註:#無.*/public static function createDatabase($conf){#初始化錯誤訊息$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。#回傳結果:#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#必填參數:$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("dbAddress","dbPassword","newDatabaseName");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");#可省略參數:$conf["variableCheck"]["isexistMuti"]["variableType"]=array("string","string","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");#$conf["variableCheck"]["isexistMuti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。#備註:#功能與checkExistAndType函式相同$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);unset($conf["variableCheck"]["isexistMuti"]);#如果 $checkResult["passed"] 等於 "fasle"if($checkResult["passed"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#建立資料庫的sql語法$sql="CREATE DATABASE ".$conf["newDatabaseName"]." CHARACTER SET='utf8' COLLATE='utf8_unicode_ci'";#函式說明:#執行mysql指令#回傳結果::#$result["status"],"true"為執行成功;"false"為執行失敗。#$result["error"],錯誤訊息的陣列#$result["queryResource"],mysql查詢後的resource資源,用於給mysql解析的資源變數。#$result["queryString"],mysql查詢的語言#查詢號的解果,需要解析。#必填參數:$conf["db"]["execMysqlQuery"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["execMysqlQuery"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["execMysqlQuery"]["dbSql"]=$sql;#要執行sql語法#可省略參數:#如果 $conf["dbPassword"] 有設定if(isset($conf["dbPassword"])){$conf["db"]["execMysqlQuery"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果 $conf["dbPort"] 有設定if(isset($conf["dbPort"])){#$conf["dbPort"],字串,為連線到mysql-Server時對應的port,可省略,預設為3306.$conf["db"]["execMysqlQuery"]["dbPort"]=$conf["dbPort"];}#if end$db["execMysqlQuery"]=db::execMysqlQuery($conf["db"]["execMysqlQuery"]);unset($conf["db"]["execMysqlQuery"]);#如果 $db["execMysqlQuery"]["status"] 等於 "false"if($db["execMysqlQuery"]["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$db["execMysqlQuery"];#回傳結果return $result;}#if end#執行道這邊代表執行正確$result["status"]="true";#回傳結果return $result;}#function createDatabase end/*#函式說明:#建立資料表,會回傳一個陣列。#回傳結果:#$result["status"],若成功則爲"true",失敗則爲"false"。#$result["error"],錯誤訊息的陣列。#$result["sql"],要執行的sql語法。#$result["function"],當前執行的函數名稱.#必填參數:#$conf["dbAddress"],字串,爲mysql-Server的位置$conf["dbAddress"]=$dbAddress;#$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號$conf["dbAccount"]=$dbAccount;#$conf["selectedDataBaseName"],字串,要選取的資料庫名稱$conf["selectedDataBaseName"]=$dbName;#$conf["newDataTableName"],字串,爲要新增的資料表名稱.$conf["newDataTableName"]="";#$conf["newDataTableColmunName"],字串,為新資料表的欄位名稱.$conf["newDataTableColmunName"]=array("id","lastUpdatedTime");#$conf["newDataTableColmunType"],字串陣列,為新資料表的欄位儲存的型態,常見的有:int,用來儲存整數;double,用來儲存有小數點的數值;timestamp,用來儲存時間;char,用來儲存任何東西,儲存成字元$conf["newDataTableColmunType"]=array("int","timestamp");#$conf["newDataTableColmunDefault"],字串陣列,為該欄位的預設值,若為currentTime則為當前時間;若為updatedCurrentTime則為初始為當前時間,之後每更動一次就更新為當次時間;若為null則代表空值;若為""則為不設定;以外的內容視為指定的數值.$conf["newDataTableColmunDefault"]=array("","updatedCurrentTime");#$conf["newDataTableColmunLength"],字串陣列,為新資料表的欄位儲存的長度,""代表不指定長度.$conf["newDataTableColmunLength"]=array("","");#$conf["newDataTableColmunNull"],字串陣列,為新資料表的欄位是否可為NULL.若為no則代表不能為null;若為yes則代表可以為null.$conf["newDataTableColmunNull"]=array("no","no","no","no");#$conf["newDataTableColmunAutoAdd"],字串陣列,"true"為新資料表的欄位自動+1;反之設為""即可.$conf["newDataTableColmunAutoAdd"]=array("true","","","");#$conf["newDataTableColmunKeyType"],字串陣列,為該欄位的鍵屬性:primary key代表主鍵;留"",代表不指定。$conf["newDataTableColmunKeyType"]=array("primary key","","","");#可省略參數:#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼.#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,為連線到mysql-Server時對應的port,可省略,預設為3306.#$conf["dbPort"]="3306";#參考資料:#無.#備註:#無.*/public static function createDataTable($conf){#初始化要回傳的結果$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#函式說明:#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。#回傳結果:#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#必填參數:$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("dbAddress","dbAccount","selectedDataBaseName","newDataTableName","newDataTableColmunName","newDataTableColmunType","newDataTableColmunLength","newDataTableColmunDefault","newDataTableColmunNull","newDataTableColmunAutoAdd","newDataTableColmunKeyType");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");#可省略參數:#$conf["variableType"]=array();#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);unset($conf["variableCheck"]["isexistMuti"]);#如果檢查動作不正常if($checkResult["status"]=="false"){#設置執失敗訊息$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳錯誤訊息return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置執失敗訊息$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳錯誤訊息return $result;}#if end#建立資料表的語法$sql="create table ".$conf["selectedDataBaseName"].".".$conf["newDataTableName"];#加上指定欄位內容的開頭$sql=$sql."(";#針對每個欄位for($i=0;$i<count($conf["newDataTableColmunName"]);$i++){#接上欄位名稱$sql=$sql.$conf["newDataTableColmunName"][$i];#接上欄位儲存型態$sql=$sql." ".$conf["newDataTableColmunType"][$i];#如果有設定資料長度if($conf["newDataTableColmunLength"][$i]!=""){#接上欄位儲存長度$sql=$sql." (".$conf["newDataTableColmunLength"][$i].")";}#if end#如果有設定值if($conf["newDataTableColmunDefault"][$i]!=""){switch($conf["newDataTableColmunDefault"][$i]){#如果設為 currentTimecase "currentTime":#設定語法$sql=$sql." default CURRENT_TIMESTAMP";#跳出switchbreak;#如果設為updatedCurrentTimecase "updatedCurrentTime":#設定語法$sql=$sql." default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP";#跳出switchbreak;#如果設為 nullcase "null":#設定語法$sql=$sql." default null";#跳出switchbreak;#如果不為以上數值default :#設定語法$sql=$sql." default ".$conf["newDataTableColmunDefault"][$i];#跳出switchbreak;}#switch end}#if end#如果有設定不能為NULLif($conf["newDataTableColmunNull"][$i]=="no"){$sql=$sql." NOT NULL";}#if end#如果有設定要自動加1if($conf["newDataTableColmunAutoAdd"][$i]=="true"){#加上自動加1的語句$sql=$sql." auto_increment";}#if end#如果有設定鍵的屬性if($conf["newDataTableColmunKeyType"][$i]!=""){$sql=$sql." ".$conf["newDataTableColmunKeyType"][$i];}#if end#如果不是最後一個欄位if($i!=count($conf["newDataTableColmunName"])-1){#加上逗號$sql=$sql.",";}#if end}#for end#加上指定欄位內容的結束$sql=$sql.") DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ;";#取得sql語法$result["sql"]=$sql;#var_dump($sql);#函式說明:#回傳結果::#$result["status"],"true"為執行成功;"false"為執行失敗。#$result["error"],錯誤訊息的陣列#查詢號的解果,需要解析。#必填參數:$conf["db"]["execMysqlQuery"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["execMysqlQuery"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["execMysqlQuery"]["dbSql"]=$sql;#要執行sql語法#可省略參數:#如果有設定密碼if(isset($conf["dbPassword"])){$conf["db"]["execMysqlQuery"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果 $conf["dbPort"] 有設定if(isset($conf["dbPort"])){#$conf["dbPort"],字串,為連線到mysql-Server時對應的port,可省略,預設為3306.$conf["db"]["execMysqlQuery"]["dbPort"]=$conf["dbPort"];}#if end$queryResult=db::execMysqlQuery($conf["db"]["execMysqlQuery"]);unset($conf["db"]["execMysqlQuery"]);#如果執行 sql 失敗if($queryResult["status"]=="false"){#設置執行失敗訊息$result["status"]="false";#設置錯誤訊息$result["error"]=$queryResult["error"];#回傳結果return $result;}#if end#設置執成功訊息$result["status"]="true";#回傳結果return $result;}#function createDataTable end/*#函式說明:#新增資料表的欄位#回傳結果:#$result["status"],"true",代表執行成功;"false"代表執行失敗#$result["error"],錯誤訊息陣列#$result["sql"],執行的sql內容#$result["function"],當前執行的函數名稱#必填參數:#$conf["dbAddress"],字串,爲mysql-Server的位置.$conf["dbAddress"]=$dbAddress;#$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號.$conf["dbAccount"]=$dbAccount;#爲用於連入mysql-Server時要使用的帳號.#$conf["selectedDataBaseName"],字串,爲目標資料表所屬的資料庫.$conf["selectedDataBaseName"]="";#$conf["selectedDataTableName"],字串,爲目標資料表所屬的資料庫.$conf["selectedDataTableName"]="";#$conf["addedColumnName"],字串,要增加的欄位名稱.$conf["addedColumnName"]="";#$conf["newDataTableColmunType"],字串,為新資料表的欄位儲存的型態,常見的有:#int,用來儲存整數.#double,用來儲存有小數點的數值.#timestamp,用來儲存時間.#varchar,最多可以儲存65535個字元,請記得使用$conf["newDataTableColmunLength"]參數指定長度.#char,用來儲存任何東西,儲存成字元,最大長限制為255.#tinytext,儲存長度限制為255,根據實際使用大小來調整儲存大小.#text,儲存大量文字,不能當索引鍵.$conf["newDataTableColmunType"]="char";#可省略參數:#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,預設為3306.#$conf["dbPort"]="3306";#$conf["newDataTableColmunLength"],字串,為新資料表的欄位儲存的長度.#$conf["newDataTableColmunLength"]="";#$conf["newDataTableColmunDefault"],字串,為該欄位的預設值.#currentTime,當前時間.#updatedCurrentTime,初始為當前時間,之後每更動一次就更新為當次時間.#null,代表空值.#以外的內容視為指定的數值.#$conf["newDataTableColmunDefault"]="";#$conf["newDataTableColmunNotNull"],字串,為新資料表的欄位不可為NULL.#"true"代表不能為null.#"false"代表可以為null.#$conf["newDataTableColmunNotNull"]="true";##$conf["newDataTableColmunAutoAdd"],字串,為新資料表的欄位是否自動+1#$conf["newDataTableColmunAutoAdd"]="true";#$conf["newDataTableColmunKeyType"],字串,為該欄位的鍵屬性:"primary key"爲主鍵、"index"爲索引鍵、"foreign key"爲外鍵#$conf["newDataTableColmunKeyType"]="primary key";#$conf["foreignDb"]="";#外鍵參考的資料庫,預設為$conf["selectedDataBaseName"].#$conf["foreignDb"]=$conf["selectedDataBaseName"];#$conf["foreignTable"],字串,外鍵參考的資料表#$conf["foreignTable"]="";#$conf["foreignTableColumn"],字串,外鍵參考的資料表欄位#$conf["foreignTableColumn"]="";#$conf["onUpdateAction"],字串,當外鍵參考的欄位資料修改時,外鍵要如何回應?"CASCADE"會將有所關聯的紀錄行也會進行刪除或修改。"SET NULL"代表會將有所關聯的紀錄行設定成 NULL。"NO ACTION"代表有存在的關聯紀錄行時,會禁止父資料表的刪除或修改動作。#$conf["onUpdateAction"]="CASCADE";##$conf["onDeleteAction"],字串,當外鍵參考的欄位資料移除時,外鍵要如何回應?"CASCADE"會將有所關聯的紀錄行也會進行刪除或修改。"SET NULL"代表會將有所關聯的紀錄行設定成 NULL。"NO ACTION"代表有存在的關聯紀錄行時,會禁止父資料表的刪除或修改動作。#$conf["onDeleteAction"]="SET NULL";#$conf["comment"],字串,欄位的註解,預設不使用.#$conf["comment"]="";#參考資料:#儲存型態=>https://mariadb.com/kb/en/data-types/#備註:#無.*/public static function addColumn(&$conf){#初始化要回傳的結果$result=array();#記錄當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#$result["argu"],字串陣列,目前輸入的參數名稱陣列.#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.#$result["notNeedVar"],字串陣列,多餘的參數名稱.#必填參數:#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("dbAddress","dbAccount","selectedDataBaseName","selectedDataTableName","addedColumnName");#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string","string","string");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可省略參數:#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。#$conf["canBeEmptyString"]="false";#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("dbPassword","dbPort","newDataTableColmunType","newDataTableColmunLength","newDataTableColmunDefault","newDataTableColmunNotNull","newDataTableColmunAutoAdd","newDataTableColmunKeyType","foreignDb","foreignTable","foreignTableColumn","onUpdateAction","onDeleteAction","comment");#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","string","string","string","string","string","string","string","string");#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null,null,null,null,null,null,null,"\$conf[\"selectedDataBaseName\"]",null,null,null,null,null);#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();#參考資料:#array_keys=>http://php.net/manual/en/function.array-keys.php$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果檢查過程有錯if($checkResult["status"]=="false"){#設置執行失敗的訊息$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置執行失敗的訊息$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#組合sql語言$sql="alter table `".$conf["selectedDataTableName"]."` add `".$conf["addedColumnName"]."`";#接上欄位儲存型態$sql=$sql." ".$conf["newDataTableColmunType"];#如果資料形態爲 "double、float"if($conf["newDataTableColmunType"]=="double" || $conf["newDataTableColmunType"]=="float" ){#則取消資料長度的限制unset($conf["newDataTableColmunLength"]);}#if end#如果有設定資料長度,且資料儲存型態不為 tinytext 與 textif(isset($conf["newDataTableColmunLength"]) && $conf["newDataTableColmunType"]!="tinytext" && $conf["newDataTableColmunType"]!="text"){#接上欄位儲存長度$sql=$sql." (".$conf["newDataTableColmunLength"].")";}#if end#如果資料形態不爲 "double、float、"if($conf["newDataTableColmunType"]!="double" && $conf["newDataTableColmunType"]!="float" && $conf["newDataTableColmunType"]!="int"){#指定欄CHARACTER SET爲utf8,COLLATE爲utf8_unicode_ci$sql=$sql." CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'";}#if end#如果有設定預設值if(isset($conf["newDataTableColmunDefault"])){#如果 $conf["newDataTableColmunType"] 不等於 "tinytext" 也不等於 "text"if($conf["newDataTableColmunType"]!="tinytext" && $conf["newDataTableColmunType"]!="text"){#根據 $conf["newDataTableColmunDefault"] 的數值內容switch($conf["newDataTableColmunDefault"]){#如果設為 currentTimecase "currentTime":#設定語法$sql=$sql." default CURRENT_TIMESTAMP";#跳出switchbreak;#如果設為updatedCurrentTimecase "updatedCurrentTime":#設定語法$sql=$sql." default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP";#跳出switchbreak;#如果設為 nullcase "null":#設定語法$sql=$sql." default null";#跳出switchbreak;#如果不為以上數值default :#設定語法$sql=$sql." default '".$conf["newDataTableColmunDefault"]."'";#跳出switchbreak;}#switch end}#if end}#if end#如果有設定不能為NULif(isset($conf["newDataTableColmunNotNull"])){#如果 $conf["newDataTableColmunNotNull"] 等於 "true"if($conf["newDataTableColmunNotNull"]=="true"){$sql=$sql." NOT NULL";}#if end}#if end#如果有設定要自動加1if(isset($conf["newDataTableColmunAutoAdd"])){#如果 $conf["newDataTableColmunAutoAdd"] 設為 "true"if($conf["newDataTableColmunAutoAdd"]=="true"){#加上自動加1的語句$sql=$sql." auto_increment";}#if end}#if end#如果有設定註解if(isset($conf["comment"])){#設定其註解$sql=$sql." COMMENT '".$conf["comment"]."' ";}#if end#如果有設定鍵的屬性if(isset($conf["newDataTableColmunKeyType"])){#如果爲 primary keyif($conf["newDataTableColmunKeyType"]=="primary key"){#設定其鍵值$sql=$sql." ".$conf["newDataTableColmunKeyType"];}#if end}#if end#執行sql語法#函式說明:#執行mysql指令#回傳結果::#$result["status"],"true"為執行成功;"false"為執行失敗。#$result["error"],錯誤訊息的陣列#$result["queryResource"],mysql查詢後的resource資源,用於給mysql解析的資源變數。#$result["queryString"],mysql查詢的語言#查詢號的解果,需要解析。#必填參數:$conf["db"]["execMysqlQuery"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["execMysqlQuery"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["execMysqlQuery"]["dbSql"]=$sql.";";#要執行sql語法#可省略參數:#如果 $conf["dbPassword"] 有設定if(isset($conf["dbPassword"])){#設定其密碼$conf["db"]["execMysqlQuery"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end$conf["db"]["execMysqlQuery"]["dbName"]=$conf["selectedDataBaseName"];#為是否要指定資料庫,預設不指定.#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#設定 $conf["dbPort"]$conf["db"]["execMysqlQuery"]["dbPort"]=$conf["dbPort"];}#if end$queryResult=db::execMysqlQuery($conf["db"]["execMysqlQuery"]);unset($conf["db"]["execMysqlQuery"]);#如果有錯誤if($queryResult["status"]=="false"){#設置錯誤訊息$result["status"]="false";#設置錯誤提示$result["error"]=$queryResult;#回傳結果return $result;}#if end#取得執行的sql語法$result["sql"][]=$queryResult["queryString"];#如果 $conf["newDataTableColmunKeyType"] 存在if(isset($conf["newDataTableColmunKeyType"])){#如果爲 indexif($conf["newDataTableColmunKeyType"]=="index"){#函式說明:#新增資料表的欄位#回傳結果:#$result["status"],"true",代表執行成功;"false"代表執行失敗.#$result["function"],當前執行的函數名稱.#$result["error"],錯誤訊息陣列.#$result["sql"],執行的sql字串.#必填參數:$conf["db::setColumnIndex"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db::setColumnIndex"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db::setColumnIndex"]["selectedDataBaseName"]=$conf["selectedDataBaseName"];#爲目標資料表所屬的資料庫$conf["db::setColumnIndex"]["selectedDataTableName"]=$conf["selectedDataTableName"];#爲目標資料表所屬的資料庫$conf["db::setColumnIndex"]["indexedColumnName"]=$conf["addedColumnName"];#要設爲index的欄位名稱#可省略參數:#如果 $conf["dbPassword"] 有設定if(isset($conf["dbPassword"])){$conf["db::setColumnIndex"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#設定 $conf["dbPort"]$conf["db::setColumnIndex"]["dbPort"]=$conf["dbPort"];}#if end$setColumnIndex=db::setColumnIndex($conf["db::setColumnIndex"]);unset($conf["db::setColumnIndex"]);#如果建立index失敗if($setColumnIndex["status"]=="false"){#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["error"]=$setColumnIndex;#回傳結果return $result;}#if end#取得執行的sql語法$result["sql"][]=$setColumnIndex["sql"];}#if end}#if end#如果 $conf["newDataTableColmunKeyType"] 有設定if(isset($conf["newDataTableColmunKeyType"])){#如果爲 foreign keyif($conf["newDataTableColmunKeyType"]=="foreign key"){#函式說明:#修改資料表的欄位#回傳結果:#$result["status"],"true",代表執行成功;"false"代表執行失敗.#$result["error"],錯誤訊息陣列.#$result["function"],當前執行的函數名稱.#$result["sql"][$i],第$i+1個執行的sql語法字串陣列.#必填參數:$conf["db::editColumn"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db::editColumn"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db::editColumn"]["selectedDataBaseName"]=$conf["selectedDataBaseName"];#爲目標資料表所屬的資料庫$conf["db::editColumn"]["selectedDataTableName"]=$conf["selectedDataTableName"];#爲目標資料表所屬的資料表$conf["db::editColumn"]["editedColumnName"]=$conf["addedColumnName"];#要修改的欄位名稱#可省略參數:#如果 $conf["dbPassword"] 有設定if(isset($conf["dbPassword"])){$conf["db::editColumn"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#$conf["newColumnName"]="";#要修改成的欄位名稱,預設與$conf["dbInformation"]["editedColumnName"]一樣。#$conf["newDataTableColmunType"]="";#為新資料表的欄位儲存的型態,常見的有:#int,用來儲存整數.#double,用來儲存有小數點的數值.#timestamp,用來儲存時間.#varchar,可以儲存65536個字元.#char,用來儲存任何東西,儲存成字元,長度限制為255.#tinytest,來儲存大量的文字,會更據使用量調整儲存大小,長度限制跟char一樣.#text,用來儲存大量的文字,不能作為索引值#$conf["newDataTableColmunLength"]="";#為新資料表的欄位儲存的長度,""代表不限制長度#$conf["newDataTableColmunDefault"]="";#為該欄位的預設值#"",代表不指定預設值#currentTime,當前時間;#updatedCurrentTime,初始為當前時間,之後每更動一次就更新為當次時間#null,代表空值#以外的內容視為指定的數值#$conf["newDataTableColmunNotNull"]="";#為新資料表的欄位不可為NULL否:#true代表不能為null,#false代表可以為null。#$conf["newDataTableColmunAutoAdd"]="true";#為新資料表的欄位是否自動+1$conf["db::editColumn"]["newDataTableColmunKeyType"]="foreign key";#為該欄位的鍵屬性:""為移除鍵的設定、"primary key"爲主鍵、"index"爲索引鍵、"foreign key"為外鍵$conf["db::editColumn"]["foreignKeyDb"]=$conf["foreignDb"];#若要設定foreign key的話,則要提供參考的資料庫,預設為$conf["selectedDataBaseName"].$conf["db::editColumn"]["foreignKeyReferenceTable"]=$conf["foreignTable"];#若要設定foreign key的話,則要提供參考的資料表$conf["db::editColumn"]["foreignKeyReferenceColumn"]=$conf["foreignTableColumn"];#若要設定foreign key的話,則要提供參考的資料表欄位#如果有設定 $conf["onUpdateAction"]if(isset($conf["onUpdateAction"])){$conf["db::editColumn"]["foreignKeyUpdateAction"]=$conf["onUpdateAction"];#若要設定foreign key的話,可以指定參考的資料表欄位更新時該欄位該怎麼處理,預設為"CASCADE",會將有所關聯的紀錄行也會進行刪除或修改。"SET NULL"代表會將有所關聯的紀錄行設定成 NULL。"NO ACTION"代表有存在的關聯紀錄行時,會禁止父資料表的刪除或修改動作。}#if end#如果有設定 $conf["onDeleteAction"]if(isset($conf["onDeleteAction"])){$conf["db::editColumn"]["foreignKeyDeleteAction"]=$conf["onDeleteAction"];#若要設定foreign key的話,可以指定參考的資料表欄位移除時該欄位該怎麼處理,預設為"SET NULL",會將有所關聯的紀錄行設定成 NULL。"NO ACTION"代表有存在的關聯紀錄行時,會禁止父資料表的刪除或修改動作。}#if end#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#設定 $conf["dbPort"]$conf["db::editColumn"]["dbPort"]=$conf["dbPort"];}#if end$editColumn=db::editColumn($conf["db::editColumn"]);unset($conf["db::editColumn"]);#如果設置為foreign失敗if($editColumn["status"]=="false"){#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["error"]=$editColumn;#回傳結果return $result;}#if end#有幾個執行的sql語法就執行幾次for($i=0;$i<count($editColumn["sql"]);$i++){#取得執行的sql語法$result["sql"][]=$editColumn["sql"][$i];}#for end}#if end}#if end#執行到這邊代表執行成功#設置成功訊息$result["status"]="true";#回傳結果return $result;}#function addColumn end/*#函式說明:#修改資料表的欄位#回傳結果:#$result["status"],"true",代表執行成功;"false"代表執行失敗.#$result["error"],錯誤訊息陣列.#$result["function"],當前執行的函數名稱.#$result["sql"][$i],第$i+1個執行的sql語法字串陣列.#必填參數:#$conf["dbAddress"],字串,爲mysql-Server的位置.$conf["dbAddress"]=$dbAddress;#$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號.$conf["dbAccount"]=$dbAccount;#$conf["selectedDataBaseName"],字串,爲目標資料表所屬的資料庫.$conf["selectedDataBaseName"]="";#$conf["selectedDataTableName"],字串,爲目標資料表所屬的資料表.$conf["selectedDataTableName"]="";#$conf["editedColumnName"],字串,要修改的欄位名稱.$conf["editedColumnName"]="";#可省略參數:#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼.#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,預設為3306.#$conf["dbPort"]="3306";#$conf["newColumnName"],字串,要修改成的欄位名稱,預設與$conf["editedColumnName"]一樣。#$conf["newColumnName"]=$conf["editedColumnName"];#$conf["newDataTableColmunType"],字串,為新資料表的欄位儲存的型態,常見的有:int,用來儲存整數;double,用來儲存有小數點的數值;timestamp,用來儲存時間;varchar,可以儲存65536個字元;char,用來儲存任何東西,儲存成字元,長度限制為255;tinytest,來儲存大量的文字,會更據使用量調整儲存大小,長度限制跟char一樣;text,用來儲存大量的文字,不能作為索引值#$conf["newDataTableColmunType"]="";#$conf["newDataTableColmunLength"]=,字串,為新資料表的欄位儲存的長度,""代表不限制長度.#$conf["newDataTableColmunLength"]="";#$conf["newDataTableColmunDefault"],字串,為該欄位的預設值:"",代表不指定預設值;currentTime,當前時間;updatedCurrentTime,初始為當前時間,之後每更動一次就更新為當次時間;null,代表空值;以外的內容視為指定的數值.#$conf["newDataTableColmunDefault"]="";#$conf["newDataTableColmunNotNull"],字串,為新資料表的欄位不可為NULL否:true代表不能為null;false代表可以為null.#$conf["newDataTableColmunNotNull"]="";#$conf["newDataTableColmunComment"],字串,欄位的註解.#$conf["newDataTableColmunComment"]="";#$conf["newDataTableColmunAutoAdd"],字串,為新資料表的欄位是否自動+1#$conf["newDataTableColmunAutoAdd"]="true";#$conf["newDataTableColmunKeyType"],字串,為該欄位的鍵屬性:""為移除鍵的設定、"primary key"爲主鍵、"index"爲索引鍵、"foreign key"為外鍵.#$conf["newDataTableColmunKeyType"]="";#$conf["foreignKeyDb"],字串,若要設定foreign key的話,則要提供參考的資料庫,預設為$conf["selectedDataBaseName"].#$conf["foreignKeyDb"]="";#$conf["foreignKeyReferenceTable"],字串,若要設定foreign key的話,則要提供參考的資料表.#$conf["foreignKeyReferenceTable"]="";#$conf["foreignKeyReferenceColumn"],字串,若要設定foreign key的話,則要提供參考的資料表欄位.#$conf["foreignKeyReferenceColumn"]="";#$conf["foreignKeyUpdateAction"],字串,若要設定foreign key的話,可以指定參考的資料表欄位更新時該欄位該怎麼處理,預設為"CASCADE",會將有所關聯的紀錄行也會進行刪除或修改。"SET NULL"代表會將有所關聯的紀錄行設定成 NULL。"NO ACTION"代表有存在的關聯紀錄行時,會禁止父資料表的刪除或修改動作。#$conf["foreignKeyUpdateAction"]="";#$conf["foreignKeyDeleteAction"],字串,若要設定foreign key的話,可以指定參考的資料表欄位移除時該欄位該怎麼處理,預設為"SET NULL",會將有所關聯的紀錄行設定成 NULL。"NO ACTION"代表有存在的關聯紀錄行時,會禁止父資料表的刪除或修改動作。#$conf["foreignKeyDeleteAction"]="SET NULL";#參考資料:#無.#備註:#無.*/public static function editColumn(&$conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#$result["argu"],字串陣列,目前輸入的參數名稱陣列.#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.#$result["notNeedVar"],字串陣列,多餘的參數名稱.#必填參數:#$conf["db::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["db::checkArguments"]["varInput"]=&$conf;#$conf["db::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["db::checkArguments"]["mustBeFilledVariableName"]=array("dbAddress","dbAccount","selectedDataBaseName","selectedDataTableName","editedColumnName");#$conf["db::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["db::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string","string","string");#$conf["db::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["db::checkArguments"]["referenceVarKey"]="db::checkArguments";#可省略參數:#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。#$conf["canBeEmptyString"]="false";#$conf["db::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["db::checkArguments"]["skipableVariableName"]=array("dbPassword","dbPort","newColumnName","newDataTableColmunType","newDataTableColmunLength","newDataTableColmunDefault","newDataTableColmunNotNull","newDataTableColmunAutoAdd","newDataTableColmunKeyType","foreignKeyDb","foreignKeyReferenceTable","foreignKeyReferenceColumn","foreignKeyUpdateAction","foreignKeyDeleteAction","newDataTableColmuComment");#$conf["db::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["db::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","string","string","string","string","string","string","string","string","string");#$conf["db::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["db::checkArguments"]["skipableVarDefaultValue"]=array(null,null,$conf["editedColumnName"],null,null,null,null,null,null,"\$conf[\"selectedDataBaseName\"]",null,null,null,null,null);#$conf["db::checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["db::checkArguments"]["arrayCountEqualCheck"][]=array();#參考資料:#array_keys=>http://php.net/manual/en/function.array-keys.php$checkResult=variableCheck::checkArguments($conf["db::checkArguments"]);unset($conf["db::checkArguments"]);#如果檢查有誤if($checkResult["status"]=="false"){#設置執行失敗的訊息$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置執行失敗的訊息$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#取得目標資料表的所有資訊#函式說明:#取得資料表所有欄位的詳細資訊#回傳的內容:#$result["status"],執行結果,"true"代表執行成功;"false"代表執行失敗#$result["error"],錯誤訊息陣列#$result["sql"],執行的sql語法#$result["oriInput"],原始的資料表欄位資訊#$result["everyLine"],逐行的欄位資訊#$result["tableName"],當前查詢的資料表名稱#$result["engine"],資料表使用的儲存引擎#$result["charset"],資料表預設的編碼#$result["columnName"][$i],各欄位的名稱陣列,$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnVarTypeAndLengthLimit"][$i],各欄位儲存的變數形態與長度限制,$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnVarType"][$i],各欄位變數儲存的型態,$i爲0開始的數字,也可以使用欄位的名稱.#$result["columnVarLengthLimit"][$i],個欄位變數的長度限制,若不存在其限制,則為"",$i爲0開始的數字,也可以使用欄位的名稱.#$result["columnNull"][$i],各欄位是否可以爲null,"true"爲可以爲null;"false"爲可不以爲"null",$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnAutoIncrement"][$i],各欄位是否會自動加1,"true"爲會;"false"爲不會,$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnDefault"][$i],各欄位的預設內容,若無則爲"沒有指定",$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnOnUpdateAction"][$i],當資料有修改時,該欄位的內容要怎麼因應,$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnCharacterSet"][$i],各欄位使用的CharacterSet,$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnCollate"][$i],各欄位使用的Collate,$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnComment"][$i],各欄位的註解,$i爲1開始的數字,也可以使用欄位的名稱。#$result["key"]["exist"],該資料表是否有索引鍵,"true"代表有;"false"代表沒有。#$result["key"][$j],該資料表的索引鍵陣列,$j爲0開始的數字,也可以使用欄位的名稱。#$result["keyConstraintName"][$j],該資料表用於識別索引鍵的CONSTRAINT名稱陣列,$j爲0開始的數字,也可以使用欄位的名稱。#$result["primaryKey"],該資料表的主鍵#$result["foreignKey"]["exist"],該資料表是否有foreign key,"true"代表有;"fasle"代表沒有。#$result["foreignKey"]["constraintName"][$k],用來識別外鍵的CONSTRAINT名稱陣列,$k爲0開始的數字,也可以使用欄位的名稱。#$result["foreignKey"]["columnName"][$k],外鍵的名稱陣列,$k爲0開始的數字,也可以使用欄位的名稱。#$result["foreignKey"]["referencesTable"][$k],外鍵參照的欄位,$k爲0開始的數字,,也可用欄位的名稱來找value.#$result["foreignKey"]["referencesColumn"][$k],外鍵參照的欄位屬於哪個資料表,$k爲0開始的數字,也可用欄位的名稱來找value.#$result["foreignKey"]["onUpdateAction"][$i],當參照的欄位資料更新時,會怎麼同步,$i爲0開始的數字,也可用欄位的名稱來找value.#$result["foreignKey"]["onDeleteAction"][$i],當參照的欄位資料移除時,會怎麼同步,$i爲0開始的數字,也可用欄位的名稱來找value.#必填參數:$conf["db"]["getTableColumnDetailInfo"]["dbAddress"]=$conf["dbAddress"];#資料庫的網路位置$conf["db"]["getTableColumnDetailInfo"]["dbAccount"]=$conf["dbAccount"];#連線到資料庫要用的帳號$conf["db"]["getTableColumnDetailInfo"]["selectedDataBase"]=$conf["selectedDataBaseName"];#連線到資料庫要選擇的資料庫$conf["db"]["getTableColumnDetailInfo"]["selectedDataTable"]=$conf["selectedDataTableName"];#連線到資料庫要檢視的資料表#可省略參數:#如果有設定連線密碼if(isset($conf["dbPassword"])){$conf["db"]["getTableColumnDetailInfo"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#設定 $conf["dbPort"]$conf["db"]["getTableColumnDetailInfo"]["dbPort"]=$conf["dbPort"];}#if end$oriColumnInfo=db::getTableColumnDetailInfo($conf["db"]["getTableColumnDetailInfo"]);unset($conf["db"]["getTableColumnDetailInfo"]);#debug#var_dump($oriColumnInfo);#exit;#如果查詢資料表資訊失敗if($oriColumnInfo["status"]=="false"){#設定執行失敗的識別$result["status"]="false";#設定錯誤訊息$result["error"]=$oriColumnInfo;#回傳結果return $result;}#if end#檢視目標欄位的鍵屬性#var_dump($oriColumnInfo);#如果沒有定新的欄位明稱if(!isset($conf["newColumnName"])){#則設定為原始欄位的名稱$conf["newColumnName"]=$oriColumnInfo["columnName"][$conf["editedColumnName"]];}#if end#如果 $conf["newDataTableColmunType"] 沒有設定if(!isset($conf["newDataTableColmunType"])){#$oriColumnInfo["columnVarTypeAndLengthLimit"][$conf["editedColumnName"]];#則設定為原始欄位的儲存型態$conf["newDataTableColmunType"]=$oriColumnInfo["columnVarType"][$conf["editedColumnName"]];}#if end#以下要檢查#如果新資料型態不等於 "tinytext" 跟 "text"if($conf["newDataTableColmunType"]!="tinytext" && $conf["newDataTableColmunType"]!="text"){#如果沒有設定 $conf["newDataTableColmunLength"]if(!isset($conf["newDataTableColmunLength"])){#則設定為原始欄位的儲存長度$conf["newDataTableColmunLength"]=$oriColumnInfo["columnVarLengthLimit"][$conf["editedColumnName"]];}#if end#如果 $conf["newDataTableColmunLength"] 不為 ""if($conf["newDataTableColmunLength"]!=""){#則加上 「(」與「)」$conf["newDataTableColmunLength"]="(".$conf["newDataTableColmunLength"].")";#屬性後面加上長度$conf["newDataTableColmunType"]=$conf["newDataTableColmunType"].$conf["newDataTableColmunLength"];}#if end}#if end#如果 $conf["newDataTableColmunDefault"] 不存在if(!isset($conf["newDataTableColmunDefault"])){#則設定為原始欄位的預設數值$conf["newDataTableColmunDefault"]="default \"".$oriColumnInfo["columnDefault"][$conf["editedColumnName"]]."\"";#如果 $oriColumnInfo["columnDefault"][$conf["editedColumnName"]] 為 ""if($oriColumnInfo["columnDefault"][$conf["editedColumnName"]]==""){#則將 $conf["newDataTableColmunDefault"] 設為$conf["newDataTableColmunDefault"]="";}#if end#如果 $oriColumnInfo["columnDefault"][$conf["editedColumnName"]] 為 "NULL"if($oriColumnInfo["columnDefault"][$conf["editedColumnName"]]=="NULL"){#則將 $conf["newDataTableColmunDefault"] 設為$conf["newDataTableColmunDefault"]="";}#if end#如果 $oriColumnInfo["columnDefault"][$conf["editedColumnName"]] 為 "沒有指定"if($oriColumnInfo["columnDefault"][$conf["editedColumnName"]]=="沒有指定"){#則將 $conf["newDataTableColmunDefault"] 設為$conf["newDataTableColmunDefault"]="";}#if end}#if end#反之有設定 $conf["newDataTableColmunDefault"]else{#當 $conf["newDataTableColmunType"] 不等於 "text" 與 "tinytest" 時,才能用預設值。if($conf["newDataTableColmunType"]!="text" && $conf["newDataTableColmunType"]!="tinytest" ){#判斷 $conf["newDataTableColmunDefault"] 的數值#currentTime,當前時間;#updatedCurrentTime,初始為當前時間,之後每更動一次就更新為當次時間#null,代表空值#以外的內容視為指定的數值switch($conf["newDataTableColmunDefault"]){#如果是case "currentTime":#則將 $conf["newDataTableColmunDefault"] 設為 " default CURRENT_TIMESTAMP "$conf["newDataTableColmunDefault"]=" default CURRENT_TIMESTAMP ";#跳出 switchbreak;#如果是 "updatedCurrentTime"case "updatedCurrentTime":#則將 $conf["newDataTableColmunDefault"] 設為 " default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP "$conf["newDataTableColmunDefault"]=" default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP ";#跳出 switchbreak;#如果是 "null"case "null":#則將 $conf["newDataTableColmunDefault"] 設為 " default null "$conf["newDataTableColmunDefault"]=" default null ";#跳出 switchbreak;#如果是 "NULL"case "NULL":#則將 $conf["newDataTableColmunDefault"] 設為 " default null "$conf["newDataTableColmunDefault"]=" default NULL ";#跳出 switchbreak;#如果是 ""case "":#則代表不設定預設值$conf["newDataTableColmunDefault"]="";break;#如果為其他內容default :#套用自訂的預設值$conf["newDataTableColmunDefault"]=" default '".$conf["newDataTableColmunDefault"]."'";}#switch end}#if end}#else end#如果 $conf["newDataTableColmunNotNull"] 沒有設定if(!isset($conf["newDataTableColmunNotNull"])){#則按照原始欄位的設定#如果 $oriColumnInfo["columnNotNull"][$conf["editedColumnName"]] 等於 "true"if($oriColumnInfo["columnNotNull"][$conf["editedColumnName"]]=="true"){#則代表不能為 null$conf["newDataTableColmunNotNull"]=" not null";}#if end#反之 $oriColumnInfo["columnNotNull"][$conf["editedColumnName"]] 等於 "false"else{#則代表可以為 null#將 $conf["newDataTableColmunNotNull"] 置換為 ""$conf["newDataTableColmunNotNull"]="";}#if end}#if end#反之 如果 $conf["newDataTableColmunNotNull"] 有設定else{#如果 $conf["newDataTableColmunNotNull"] 為 "true"if($conf["newDataTableColmunNotNull"]=="true"){#則置換為 "not null"$conf["newDataTableColmunNotNull"]="not null";}#if end#如果 $conf["newDataTableColmunNotNull"] 為 "false"if($conf["newDataTableColmunNotNull"]=="false"){#則置換為 ""$conf["newDataTableColmunNotNull"]="";}#if end}#else end#如果 $conf["newDataTableColmunAutoAdd"] 沒有設定if(!isset($conf["newDataTableColmunAutoAdd"])){#原始欄位的設定為 true 的話if($oriColumnInfo["columnAutoIncrement"][$conf["editedColumnName"]]=="true"){#則按照原始欄位的設定$conf["newDataTableColmunAutoAdd"]="auto_increment";}#if end#反之代表沒有設定else{#設為 ""$conf["newDataTableColmunAutoAdd"]="";}#else end}#if end#反之代表 $conf["newDataTableColmunAutoAdd"] 有設定else{#如果 $conf["newDataTableColmunAutoAdd"] 等於 "true"if($conf["newDataTableColmunAutoAdd"]=="true"){#則將 $conf["newDataTableColmunAutoAdd"] 設為 auto_increment$conf["newDataTableColmunAutoAdd"]="auto_increment";}#if end#反之 $conf["newDataTableColmunAutoAdd"] 不等於 "true"else{#則將 $conf["newDataTableColmunAutoAdd"] 設為 ""$conf["newDataTableColmunAutoAdd"]="";}#else end}#else end#如果 $conf["newDataTableColmunType"] 為 "char" 或 "text"if($conf["newDataTableColmunType"]=="char" || $conf["newDataTableColmunType"]=="text"){#CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci',設定為utf8$utf8="CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'";}#if end#反之不是字元或文字else{#則設為""$utf8="";}#else end#如果有設定 $conf["newDataTableColmunComment"]if(isset($conf["newDataTableColmunComment"])){#如果 $conf["newDataTableColmunComment"] 等於 ""if($conf["newDataTableColmunComment"]==""){#設置為"沒有註解"$comment=" COMMENT '沒有註解'";}#if end#反之設置指定的註解字串else{#設置註解$comment=" COMMENT '".$conf["newDataTableColmunComment"]."'";}#else end}#if end#反之else{#如果原始沒有註解if(!isset($oriColumnInfo["colmunComment"][$conf["editedColumnName"]])){#設為空字串$comment="";}#if end#反之else{#設為原始的註解$comment=" COMMENT '".$oriColumnInfo["colmunComment"][$conf["editedColumnName"]]."'";}#else end}#else end#組合sql語法$sql="alter table ".$conf["selectedDataBaseName"].".".$conf["selectedDataTableName"]." change `".$conf["editedColumnName"]."` `".$conf["newColumnName"]."` ".$conf["newDataTableColmunType"]." ".$utf8." ".$conf["newDataTableColmunDefault"]." ".$conf["newDataTableColmunNotNull"]." ".$conf["newDataTableColmunAutoAdd"]." ".$comment." ;";#執行 sql 語法#函式說明:#執行mysql指令#回傳結果::#$result["status"],"true"為執行成功;"false"為執行失敗。#$result["error"],錯誤訊息的陣列#$result["queryResource"],mysql查詢後的resource資源,用於給mysql解析的資源變數。#$result["queryString"],mysql查詢的語言#查詢號的解果,需要解析。#必填參數:$conf["db"]["execMysqlQuery"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["execMysqlQuery"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["execMysqlQuery"]["dbSql"]=$sql;#要執行sql語法#可省略參數:#如果有設定連線密碼if(isset($conf["dbPassword"])){$conf["db"]["execMysqlQuery"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#設定 $conf["dbPort"]$conf["db"]["execMysqlQuery"]["dbPort"]=$conf["dbPort"];}#if end$sqlExecResult=db::execMysqlQuery($conf["db"]["execMysqlQuery"]);unset($conf["db"]["execMysqlQuery"]);#如果執行 sql 語法錯誤if($sqlExecResult["status"]=="false"){#設定執行失敗的識別$result["status"]="false";#設定錯誤訊息$result["error"]=$sqlExecResult;#回傳結果return $result;}#if end#取得執行的sql語法$result["sql"][]=$sqlExecResult["queryString"];#如果 $conf["newDataTableColmunKeyType"] 有設定if(isset($conf["newDataTableColmunKeyType"])){#取得其key為何種#函式說明:#取得資料表所有欄位的詳細資訊#回傳的內容:#$result["status"],執行結果,"true"代表執行成功;"false"代表執行失敗#$result["error"],錯誤訊息陣列#$result["sql"],執行的sql語法#$result["oriInput"],原始的資料表欄位資訊#$result["everyLine"],逐行的欄位資訊#$result["tableName"],當前查詢的資料表名稱#$result["engine"],資料表使用的儲存引擎#$result["charset"],資料表預設的編碼#$result["columnName"][$i],各欄位的名稱陣列,$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnVarTypeAndLengthLimit"][$i],各欄位儲存的變數形態與長度限制,$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnNotNull"][$i],各欄位是否可以不爲null,"true"爲可以不爲null;"false"爲可以爲"null",$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnAutoIncrement"][$i],各欄位是否會自動加1,"true"爲會;"false"爲不會,$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnDefault"][$i],各欄位的預設內容,若無則爲"沒有指定",$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnOnUpdateAction"][$i],當資料有修改時,該欄位的內容要怎麼因應,$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnCharacterSet"][$i],各欄位使用的CharacterSet,$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnCollate"][$i],各欄位使用的Collate,$i爲0開始的數字,也可以使用欄位的名稱。#$result["key"]["exist"],該資料表是否有索引鍵,"true"代表有;"false"代表沒有。#$result["key"][$j],該資料表的索引鍵陣列,$j爲0開始的數字,也可以使用欄位的名稱。#$result["primaryKey"],該資料表的主鍵#$result["foreignKey"]["exist"],該資料表是否有foreign key,"true"代表有;"fasle"代表沒有。#$result["foreignKey"]["constraintName"][$k],用來識別外鍵的CONSTRAINT名稱陣列,$k爲0開始的數字,也可以使用欄位的名稱。#$result["foreignKey"]["columnName"][$k],外鍵的名稱陣列#$result["foreignKey"]["referencesTable"][$k],外鍵參照的欄位,$k爲0開始的數字#$result["foreignKey"]["referencesColumn"][$k],外鍵參照的欄位屬於哪個資料表,$k爲0開始的數字#$result["foreignKey"]["OnUpdateAction"][$l],當參照的欄位資料更新時,會怎麼同步,$l爲0開始的數字#$result["foreignKey"]["OnDeleteAction"][$m],當參照的欄位資料移除時,會怎麼同步,$m爲0開始的數字#必填參數:$conf["db"]["getTableColumnDetailInfo"]["dbAddress"]=$conf["dbAddress"];$conf["db"]["getTableColumnDetailInfo"]["dbAccount"]=$conf["dbAccount"];$conf["db"]["getTableColumnDetailInfo"]["selectedDataBase"]=$conf["selectedDataBaseName"];$conf["db"]["getTableColumnDetailInfo"]["selectedDataTable"]=$conf["selectedDataTableName"];#可省略參數:#如果 $conf["dbPassword"] 有設定if(isset($conf["dbPassword"])){#套用連限時的密碼$conf["db"]["getTableColumnDetailInfo"]["dbPassword"]=$conf["dbPassword"];}#if end#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#設定 $conf["dbPort"]$conf["db"]["getTableColumnDetailInfo"]["dbPort"]=$conf["dbPort"];}#if end$tableColumnDetial=db::getTableColumnDetailInfo($conf["db"]["getTableColumnDetailInfo"]);unset($conf["db"]["getTableColumnDetailInfo"]);#卸除變數,避免錯誤產生.#如果取得資料表結構失敗if($tableColumnDetial["status"]=="false"){#設置執行不正常$result["status"]="false";#設置執行錯誤訊息$result["error"]=$tableColumnDetial;#回傳結果return $result;}#if end#判斷 $conf["newDataTableColmunKeyType"] 來進行處理#"index"爲索引鍵,"foreign key"為外鍵,""為將鍵屬性取消。switch($conf["newDataTableColmunKeyType"]){#如果 $conf["newDataTableColmunKeyType"] 是 ""case "":#檢查目標欄位是主鍵或是索引鍵或是外鍵#debug#var_dump($tableColumnDetial);#如果 $tableColumnDetial["foreignKey"]["exist"] 等於 "true",代表有外鍵if($tableColumnDetial["foreignKey"]["exist"]=="true"){#如果 $tableColumnDetial["foreignKey"]["columnName"][$conf["dbInformation"]["newColumnName"]] 存在,則代表該欄位為索引鍵if(isset($tableColumnDetial["foreignKey"]["columnName"][$conf["newColumnName"]])){#移除外鍵#函式說明:#移除資料表單1欄位的外鍵#回傳結果:#$result["status"],"true",代表執行成功;"false"代表執行失敗#$result["error"],錯誤訊息陣列#$result["sql"],執行的sql字串.#必填參數:$conf["db"]["eraseForeignKey"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["eraseForeignKey"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["eraseForeignKey"]["selectedDataBaseName"]=$conf["selectedDataBaseName"];#爲目標資料表所屬的資料庫$conf["db"]["eraseForeignKey"]["selectedDataTableName"]=$conf["selectedDataTableName"];#爲目標資料表所屬的資料庫$conf["db"]["eraseForeignKey"]["erasedForeignKeyColumnConstraintName"]=$tableColumnDetial["foreignKey"]["constraintName"][$conf["newColumnName"]];#要移除外鍵欄位的CONSTRAINT名稱#可省略參數:#如果 $conf["dbPassword"] 存在if(isset($conf["dbPassword"])){#則設定連線的密碼$conf["db"]["eraseForeignKey"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#設定 $conf["dbPort"]$conf["db"]["eraseForeignKey"]["dbPort"]=$conf["dbPort"];}#if end$eraseForeignKeyResult=db::eraseForeignKey($conf["db"]["eraseForeignKey"]);unset($conf["db"]["eraseForeignKey"]);#取得執行的sql字串$result["sql"][]=$eraseForeignKeyResult["sql"];#如果 $eraseForeignKeyResult["status"]等於"fasle"if($eraseForeignKeyResult["status"]=="false"){#設置出錯的識別$result["status"]="fasle";#設置錯誤訊息$result["error"]=$eraseForeignKeyResult;#回傳結果return $result;}#if end}#if end}#if end#如果 $tableColumnDetial["key"]["exist"] 等於 "true",代表有索引鍵if($tableColumnDetial["key"]["exist"]=="true"){#如果 $tableColumnDetial["key"][$conf["newColumnName"]] 存在,則代表該欄位為索引鍵if(isset($tableColumnDetial["key"][$conf["newColumnName"]])){#移除索引鍵#函式說明:#移除資料表單1欄位的索引鍵#回傳結果:#$result["status"],"true",代表執行成功;"false"代表執行失敗#$result["error"],錯誤訊息陣列#$result["sql"],執行的sql字串.#必填參數:$conf["db"]["eraseIndexKey"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["eraseIndexKey"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["eraseIndexKey"]["selectedDataBaseName"]=$conf["selectedDataBaseName"];#爲目標資料表所屬的資料庫$conf["db"]["eraseIndexKey"]["selectedDataTableName"]=$conf["selectedDataTableName"];#爲目標資料表所屬的資料表$conf["db"]["eraseIndexKey"]["erasedIndexKeyColumnConstraintName"]=$tableColumnDetial["keyConstraintName"][$conf["newColumnName"]];#要移除外鍵欄位的CONSTRAINT名稱#可省略參數:#如果 $conf["dbPassword"] 存在if(isset($conf["dbPassword"])){#則設定連線的密碼$conf["db"]["eraseIndexKey"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#設定 $conf["dbPort"]$conf["db"]["eraseIndexKey"]["dbPort"]=$conf["dbPort"];}#if end$eraseIndexKeyResult=db::eraseIndexKey($conf["db"]["eraseIndexKey"]);#var_dump($conf["db"]["eraseIndexKey"]);unset($conf["db"]);#debug#var_dump($eraseIndexKeyResult);#取得執行的sql語言$result["sql"][]=$eraseIndexKeyResult["sql"];#如果 $eraseIndexKeyResult["status"]等於"fasle"if($eraseIndexKeyResult["status"]=="false"){#設置出錯的識別$result["status"]="false";#設置錯誤訊息$result["error"]=$eraseIndexKeyResult;#回傳結果return $result;}#if end}#if end}#if end#中斷switchbreak;#如果 $conf["newDataTableColmunKeyType"] 是 "index"case "index":#如果 $tableColumnDetial["foreignKey"]["exist"] 等於 "true",代表有外鍵if($tableColumnDetial["foreignKey"]["exist"]=="true"){#echo "have foreign key";#如果 $tableColumnDetial["foreignKey"]["columnName"][$conf["newColumnName"]] 存在,則代表該欄位為索引鍵if(isset($tableColumnDetial["foreignKey"]["columnName"][$conf["newColumnName"]])){#移除外鍵#函式說明:#移除資料表單1欄位的外鍵#回傳結果:#$result["status"],"true",代表執行成功;"false"代表執行失敗#$result["error"],錯誤訊息陣列#必填參數:$conf["db"]["eraseForeignKey"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["eraseForeignKey"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["eraseForeignKey"]["selectedDataBaseName"]=$conf["selectedDataBaseName"];#爲目標資料表所屬的資料庫$conf["db"]["eraseForeignKey"]["selectedDataTableName"]=$conf["selectedDataTableName"];#爲目標資料表所屬的資料庫$conf["db"]["eraseForeignKey"]["erasedForeignKeyColumnConstraintName"]=$tableColumnDetial["foreignKey"]["constraintName"][$conf["newColumnName"]];#要移除外鍵欄位的CONSTRAINT名稱#可省略參數:#如果 $conf["dbPassword"] 存在if(isset($conf["dbPassword"])){#則設定連線的密碼$conf["db"]["eraseForeignKey"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#設定 $conf["dbPort"]$conf["db"]["eraseForeignKey"]["dbPort"]=$conf["dbPort"];}#if end$eraseForeignKeyResult=db::eraseForeignKey($conf["db"]["eraseForeignKey"]);unset($conf["db"]["eraseForeignKey"]);#執行的sql字串$result["sql"][]=$eraseForeignKeyResult["sql"];#如果 $eraseForeignKeyResult["status"]等於"fasle"if($eraseForeignKeyResult["status"]=="false"){#設置出錯的識別$result["status"]="false";#設置錯誤訊息$result["error"]=$eraseForeignKeyResult;#回傳結果return $result;}#if end}#if end}#if end#如果 $tableColumnDetial["key"]["exist"] 等於 "true",代表有索引鍵if($tableColumnDetial["key"]["exist"]=="true"){#檢查目標欄位是否為索引鍵if(!isset($tableColumnDetial["index"][$conf["newColumnName"]])){#代表目標欄位不為索引鍵#建立索引鍵#函式說明:#新增資料表的欄位#回傳結果:#$result["status"],"true",代表執行成功;"false"代表執行失敗.#$result["function"],當前執行的函數名稱.#$result["error"],錯誤訊息陣列.#$result["warning"],警告訊息.#$result["sql"],執行的sql字串.#必填參數:$conf["db"]["setColumnIndex"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["setColumnIndex"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["setColumnIndex"]["selectedDataBaseName"]=$conf["selectedDataBaseName"];#爲目標資料表所屬的資料庫$conf["db"]["setColumnIndex"]["selectedDataTableName"]=$conf["selectedDataTableName"];#爲目標資料表所屬的資料庫$conf["db"]["setColumnIndex"]["indexedColumnName"]=$conf["newColumnName"];#要設爲index的欄位名稱#可省略參數:#如果 $conf["dbPassword"] 存在if(isset($conf["dbPassword"])){#則設定連線的密碼$conf["db"]["setColumnIndex"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#設定 $conf["dbPort"]$conf["db"]["setColumnIndex"]["dbPort"]=$conf["dbPort"];}#if end$setColumnIndexResult=db::setColumnIndex($conf["db"]["setColumnIndex"]);unset($conf["db"]["setColumnIndex"]);#如果設置 column index 失敗if($setColumnIndexResult["status"]==="false"){#設置出錯的識別$result["status"]="false";#設置錯誤訊息$result["error"]=$setColumnIndexResult;#回傳結果return $result;}#if end#如果有執行 sqlif(isset($setColumnIndexResult["sql"])){#取得執行的sql字串$result["sql"][]=$setColumnIndexResult["sql"];}#if end#如果 $setColumnIndexResult["status"] 為 "fasle"if($setColumnIndexResult["status"]=="fasle"){#設置出錯的識別$result["status"]="false";#設置錯誤訊息$result["error"]=$setColumnIndexResult;#回傳結果return $result;}#if end}#if end}#if end#如果 $tableColumnDetial["key"]["exist"] 等於 "fasle",代表沒有索引鍵if($tableColumnDetial["key"]["exist"]=="false"){#建立索引鍵#函式說明:#新增資料表的欄位#回傳結果:#$result["status"],"true",代表執行成功;"false"代表執行失敗#$result["error"],錯誤訊息陣列#必填參數:$conf["db"]["setColumnIndex"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["setColumnIndex"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["setColumnIndex"]["selectedDataBaseName"]=$conf["selectedDataBaseName"];#爲目標資料表所屬的資料庫$conf["db"]["setColumnIndex"]["selectedDataTableName"]=$conf["selectedDataTableName"];#爲目標資料表所屬的資料庫$conf["db"]["setColumnIndex"]["indexedColumnName"]=$conf["newColumnName"];#要設爲index的欄位名稱#可省略參數:#如果 $conf["dbPassword"] 存在if(isset($conf["dbPassword"])){#則設定連線的密碼$conf["db"]["setColumnIndex"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#設定 $conf["dbPort"]$conf["db"]["setColumnIndex"]["dbPort"]=$conf["dbPort"];}#if end$setColumnIndexResult=db::setColumnIndex($conf["db"]["setColumnIndex"]);unset($conf["db"]["setColumnIndex"]);#取得執行的sql字串.$result["sql"][]=$setColumnIndexResult["sql"];#如果 $setColumnIndexResult["status"] 為 "fasle"if($setColumnIndexResult["status"]=="fasle"){#設置出錯的識別$result["status"]="false";#設置錯誤訊息$result["error"]=$setColumnIndexResult;#回傳結果return $result;}#if end}#if end#中斷switchbreak;#如果是 foreign keycase "foreign key":#echo "enter foreign key";#檢查該欄位是否為foreign key#如果 $tableColumnDetial["foreignKey"]["exist"] 等於 "true",代表有外鍵if($tableColumnDetial["foreignKey"]["exist"]=="true"){#echo "have foreig key";#如果 $tableColumnDetial["foreignKey"]["columnName"][$conf["dbInformation"]["newColumnName"]] 存在,則代表該欄位為索引鍵if(isset($tableColumnDetial["foreignKey"]["columnName"][$conf["newColumnName"]])){#移除外鍵#函式說明:#移除資料表單1欄位的外鍵#回傳結果:#$result["status"],"true",代表執行成功;"false"代表執行失敗#$result["error"],錯誤訊息陣列#必填參數:$conf["db"]["eraseForeignKey"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["eraseForeignKey"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["eraseForeignKey"]["selectedDataBaseName"]=$conf["selectedDataBaseName"];#爲目標資料表所屬的資料庫$conf["db"]["eraseForeignKey"]["selectedDataTableName"]=$conf["selectedDataTableName"];#爲目標資料表所屬的資料庫$conf["db"]["eraseForeignKey"]["erasedForeignKeyColumnConstraintName"]=$tableColumnDetial["foreignKey"]["constraintName"][$conf["newColumnName"]];#要移除外鍵欄位的CONSTRAINT名稱#可省略參數:#如果 $conf["dbPassword"] 存在if(isset($conf["dbPassword"])){#則設定連線的密碼$conf["db"]["eraseForeignKey"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#設定 $conf["dbPort"]$conf["db"]["eraseForeignKey"]["dbPort"]=$conf["dbPort"];}#if end$eraseForeignKeyResult=db::eraseForeignKey($conf["db"]["eraseForeignKey"]);unset($conf["db"]["eraseForeignKey"]);#取得執行的sql字串$result["sql"][]=$eraseForeignKeyResult["sql"];#如果 $eraseForeignKeyResult["status"]等於"fasle"if($eraseForeignKeyResult["status"]=="false"){#設置出錯的識別$result["status"]="false";#設置錯誤訊息$result["error"]=$eraseForeignKeyResult;#回傳結果return $result;}#if end}#if end}#if end#檢查該欄位是否為index#如果 $tableColumnDetial["key"]["exist"] 等於 "false",代表沒有索引鍵if($tableColumnDetial["key"]["exist"]=="false"){#echo "have no index";#建立索引鍵#函式說明:#新增資料表的欄位#回傳結果:#$result["status"],"true",代表執行成功;"false"代表執行失敗#$result["error"],錯誤訊息陣列#必填參數:$conf["db"]["setColumnIndex"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["setColumnIndex"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["setColumnIndex"]["selectedDataBaseName"]=$conf["selectedDataBaseName"];#爲目標資料表所屬的資料庫$conf["db"]["setColumnIndex"]["selectedDataTableName"]=$conf["selectedDataTableName"];#爲目標資料表所屬的資料庫$conf["db"]["setColumnIndex"]["indexedColumnName"]=$conf["newColumnName"];#要設爲index的欄位名稱#可省略參數:#如果 $conf["dbPassword"] 存在if(isset($conf["dbPassword"])){#則設定連線的密碼$conf["db"]["setColumnIndex"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#設定 $conf["dbPort"]$conf["db"]["setColumnIndex"]["dbPort"]=$conf["dbPort"];}#if end$setColumnIndexResult=db::setColumnIndex($conf["db"]["setColumnIndex"]);unset($conf["db"]["setColumnIndex"]);#取得執行的sql字串$result["sql"][]=$setColumnIndexResult["sql"];#如果 $setColumnIndexResult["status"] 為 "false"if($setColumnIndexResult["status"]=="false"){#設置出錯的識別$result["status"]="false";#設置錯誤訊息$result["error"]=$setColumnIndexResult;#回傳結果return $result;}#if end}#if end#反之有索引鍵#如果目標欄位不是索引鍵else if(!isset($tableColumnDetial["key"][$conf["newColumnName"]])){#建立索引鍵#函式說明:#新增資料表的欄位#回傳結果:#$result["status"],"true",代表執行成功;"false"代表執行失敗#$result["error"],錯誤訊息陣列#必填參數:$conf["db"]["setColumnIndex"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["setColumnIndex"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["setColumnIndex"]["selectedDataBaseName"]=$conf["selectedDataBaseName"];#爲目標資料表所屬的資料庫$conf["db"]["setColumnIndex"]["selectedDataTableName"]=$conf["selectedDataTableName"];#爲目標資料表所屬的資料庫$conf["db"]["setColumnIndex"]["indexedColumnName"]=$conf["newColumnName"];#要設爲index的欄位名稱#可省略參數:#如果 $conf["dbPassword"] 存在if(isset($conf["dbPassword"])){#則設定連線的密碼$conf["db"]["setColumnIndex"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#設定 $conf["dbPort"]$conf["db"]["setColumnIndex"]["dbPort"]=$conf["dbPort"];}#if end$setColumnIndexResult=db::setColumnIndex($conf["db"]["setColumnIndex"]);unset($conf["db"]["setColumnIndex"]);#取得執行的sql字串$result["sql"][]=$setColumnIndexResult["sql"];#如果 $setColumnIndexResult["status"] 為 "false"if($setColumnIndexResult["status"]=="false"){#設置出錯的識別$result["status"]="false";#設置錯誤訊息$result["error"]=$setColumnIndexResult;#回傳結果return $result;}#if end}#else end#檢查該欄位的foreign key設定參數是否存在#函式說明:#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。#回傳結果:#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#必填參數:$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("foreignKeyReferenceTable","foreignKeyReferenceColumn");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");#可省略參數:#$conf["variableType"]=array();#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);unset($conf["variableCheck"]["isexistMuti"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置執行失敗的訊息$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置執行失敗的訊息$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果 $conf["foreignKeyUpdateAction"] 不存在if(!isset($conf["foreignKeyUpdateAction"])){#則預設為"CASCADE"將有所關聯的紀錄行也會進行刪除或修改。$conf["foreignKeyUpdateAction"]="CASCADE";#若要設定foreign key的話,可以指定參考的資料表欄位更新時該欄位該怎麼處理,預設為"CASCADE",會將有所關聯的紀錄行也會進行刪除或修改。"SET NULL"代表會將有所關聯的紀錄行設定成 NULL。"NO ACTION"代表有存在的關聯紀錄行時,會禁止父資料表的刪除或修改動作。}#if end#如果 $conf["foreignKeyDeleteAction"] 沒有設定if(!isset($conf["foreignKeyDeleteAction"])){#預設為"SET NULL",會將有所關聯的紀錄行設定成 NULL。$conf["foreignKeyDeleteAction"]="SET NULL";#若要設定foreign key的話,可以指定參考的資料表欄位移除時該欄位該怎麼處理,預設為"SET NULL",會將有所關聯的紀錄行設定成 NULL。"NO ACTION"代表有存在的關聯紀錄行時,會禁止父資料表的刪除或修改動作。}#if end#檢查目標欄位的 key constraint 名稱#取得其key為何種#函式說明:#取得資料表所有欄位的詳細資訊#回傳的內容:#$result["status"],執行結果,"true"代表執行成功;"false"代表執行失敗#$result["error"],錯誤訊息陣列#$result["sql"],執行的sql語法#$result["oriInput"],原始的資料表欄位資訊#$result["everyLine"],逐行的欄位資訊#$result["tableName"],當前查詢的資料表名稱#$result["engine"],資料表使用的儲存引擎#$result["charset"],資料表預設的編碼#$result["columnName"][$i],各欄位的名稱陣列,$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnVarTypeAndLengthLimit"][$i],各欄位儲存的變數形態與長度限制,$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnNotNull"][$i],各欄位是否可以不爲null,"true"爲可以不爲null;"false"爲可以爲"null",$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnAutoIncrement"][$i],各欄位是否會自動加1,"true"爲會;"false"爲不會,$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnDefault"][$i],各欄位的預設內容,若無則爲"沒有指定",$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnOnUpdateAction"][$i],當資料有修改時,該欄位的內容要怎麼因應,$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnCharacterSet"][$i],各欄位使用的CharacterSet,$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnCollate"][$i],各欄位使用的Collate,$i爲0開始的數字,也可以使用欄位的名稱。#$result["key"]["exist"],該資料表是否有索引鍵,"true"代表有;"false"代表沒有。#$result["key"][$j],該資料表的索引鍵陣列,$j爲0開始的數字,也可以使用欄位的名稱。#$result["primaryKey"],該資料表的主鍵#$result["foreignKey"]["exist"],該資料表是否有foreign key,"true"代表有;"fasle"代表沒有。#$result["foreignKey"]["constraintName"][$k],用來識別外鍵的CONSTRAINT名稱陣列,$k爲0開始的數字,也可以使用欄位的名稱。#$result["foreignKey"]["columnName"][$k],外鍵的名稱陣列#$result["foreignKey"]["referencesTable"][$k],外鍵參照的欄位,$k爲0開始的數字#$result["foreignKey"]["referencesColumn"][$k],外鍵參照的欄位屬於哪個資料表,$k爲0開始的數字#$result["foreignKey"]["OnUpdateAction"][$l],當參照的欄位資料更新時,會怎麼同步,$l爲0開始的數字#$result["foreignKey"]["OnDeleteAction"][$m],當參照的欄位資料移除時,會怎麼同步,$m爲0開始的數字#必填參數:$conf["db"]["getTableColumnDetailInfo"]["dbAddress"]=$conf["dbAddress"];$conf["db"]["getTableColumnDetailInfo"]["dbAccount"]=$conf["dbAccount"];$conf["db"]["getTableColumnDetailInfo"]["selectedDataBase"]=$conf["selectedDataBaseName"];$conf["db"]["getTableColumnDetailInfo"]["selectedDataTable"]=$conf["selectedDataTableName"];#可省略參數:#如果 $conf["dbPassword"] 有設定if(isset($conf["dbPassword"])){#套用連限時的密碼$conf["db"]["getTableColumnDetailInfo"]["dbPassword"]=$conf["dbPassword"];}#if end#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#設定 $conf["dbPort"]$conf["db"]["getTableColumnDetailInfo"]["dbPort"]=$conf["dbPort"];}#if end$tableColumnDetial=db::getTableColumnDetailInfo($conf["db"]["getTableColumnDetailInfo"]);unset($conf["db"]["getTableColumnDetailInfo"]);#卸除變數,避免錯誤產生.#如果取得資料表結構失敗if($tableColumnDetial["status"]=="false"){#設置執行不正常$result["status"]="false";#設置執行錯誤訊息$result["error"]=$tableColumnDetial;#回傳結果return $result;}#if end#依據設定將該欄位設定為foreign key#設定其參照的資料表與欄位的sql語法$sql="alter table `".$conf["selectedDataBaseName"]."`.`".$conf["selectedDataTableName"]."` add FOREIGN KEY(`".$tableColumnDetial["key"][$conf["newColumnName"]]."`) REFERENCES `".$conf["foreignKeyDb"]."`.`".$conf["foreignKeyReferenceTable"]."`(`".$conf["foreignKeyReferenceColumn"]."`) ON UPDATE ".$conf["foreignKeyUpdateAction"]." ON DELETE ".$conf["foreignKeyDeleteAction"];#執行 sql 語法#函式說明:#執行mysql指令#回傳結果::#$result["status"],"true"為執行成功;"false"為執行失敗。#$result["error"],錯誤訊息的陣列#$result["queryResource"],mysql查詢後的resource資源,用於給mysql解析的資源變數。#$result["queryString"],mysql查詢的語言#查詢號的解果,需要解析。#必填參數:$conf["db"]["execMysqlQuery"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["execMysqlQuery"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["execMysqlQuery"]["dbSql"]=$sql;#要執行sql語法#可省略參數:#如果有設定連線密碼if(isset($conf["dbPassword"])){$conf["db"]["execMysqlQuery"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#$conf["db"]["execMysqlQuery"]["dbName"]=$conf["selectedDataBaseName"];#為是否要指定資料庫,預設不指定.#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#設定 $conf["dbPort"]$conf["db"]["execMysqlQuery"]["dbPort"]=$conf["dbPort"];}#if end$sqlExecResult=db::execMysqlQuery($conf["db"]["execMysqlQuery"]);unset($conf["db"]["execMysqlQuery"]);#var_dump($sqlExecResult);#取得執行的sql語法$result["sql"][]=$sqlExecResult["queryString"];#如果執行 sql 語法錯誤if($sqlExecResult["status"]=="false"){#echo "fasle";#設定執行失敗的識別$result["status"]="false";#設定錯誤訊息$result["error"]=$sqlExecResult;#回傳結果return $result;}#if end#跳出 foreign keybreak;#如果不是以上參數default:#設定執行錯誤的識別$result["status"]="false";#設定錯誤訊息$result["error"]="可用的鍵型為index、foregin key、primary key";#回傳結果return $result;}#switch end}#if end#執行到這邊代表執行成功#設定執行成功的識別$result["status"]="true";#回傳結果return $result;}#function editColumn end/*#函式說明:#新增資料表的欄位#回傳結果:#$result["status"],"true",代表執行成功;"false"代表執行失敗.#$result["function"],當前執行的函數名稱.#$result["error"],錯誤訊息陣列.#$result["warning"],警告訊息.#$result["sql"],執行的sql字串.#必填參數:$conf["dbAddress"],字串,爲mysql-Server的位置.$conf["dbAddress"]=$dbAddress;$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號.$conf["dbAccount"]=$dbAccount;$conf["selectedDataBaseName"],字串,爲目標資料表所屬的資料庫.$conf["selectedDataBaseName"]="";$conf["selectedDataTableName"],字串,爲目標資料表所屬的資料庫.$conf["selectedDataTableName"]="";$conf["indexedColumnName"],字串,要設爲index的欄位名稱.$conf["indexedColumnName"]="";#可省略參數:#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,預設為3306.#$conf["dbPort"]="3306";#參考資料:#無.#備註:#無.*/public static function setColumnIndex($conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#函式說明:#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。#回傳結果:#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#必填參數:$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("dbAddress","dbAccount","selectedDataBaseName","selectedDataTableName","indexedColumnName");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");#可省略參數:#$conf["variableType"]=array();#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);unset($conf["variableCheck"]["isexistMuti"]);#如果檢查不通過if($checkResult["passed"]=="false"){#設置執行失敗的訊息$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#查詢該欄位是否已經是index了#函式說明:#取得資料表所有欄位的詳細資訊#回傳的內容:#$result["status"],執行結果,"true"代表執行成功;"false"代表執行失敗#$result["error"],錯誤訊息陣列#$result["function"],當前執行的函數名稱.#$result["sql"],執行的sql語法#$result["oriInput"],原始的資料表欄位資訊#$result["everyLine"],逐行的欄位資訊#$result["tableName"],當前查詢的資料表名稱#$result["engine"],資料表使用的儲存引擎#$result["charset"],資料表預設的編碼#$result["columnName"][$i],各欄位的名稱陣列,$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnVarTypeAndLengthLimit"][$i],各欄位儲存的變數形態與長度限制,$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnVarType"][$i],各欄位變數儲存的型態,$i爲1開始的數字,也可以使用欄位的名稱.#$result["columnVarLengthLimit"][$i],個欄位變數的長度限制,若不存在其限制,則為"",$i爲1開始的數字,也可以使用欄位的名稱.#$result["columnNotNull"][$i],各欄位是否不可爲null,"true"爲不可以爲null;"false"爲可爲"null",$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnAutoIncrement"][$i],各欄位是否會自動加1,"true"爲會;"false"爲不會,$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnDefault"][$i],各欄位的預設內容,若無則爲"沒有指定",$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnOnUpdateAction"][$i],當資料有修改時,該欄位的內容要怎麼因應,$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnCharacterSet"][$i],各欄位使用的CharacterSet,$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnCollate"][$i],各欄位使用的Collate,$i爲1開始的數字,也可以使用欄位的名稱。#$result["key"]["exist"],該資料表是否有索引鍵,"true"代表有;"false"代表沒有。#$result["key"][$j],該資料表的索引鍵陣列,$j爲0開始的數字,也可以使用欄位的名稱。#$result["keyConstraintName"][$j],該資料表用於識別索引鍵的CONSTRAINT名稱陣列,$j爲1開始的數字,也可以使用欄位的名稱。#$result["primaryKey"],該資料表的主鍵#$result["foreignKey"]["exist"],該資料表是否有foreign key,"true"代表有;"fasle"代表沒有。#$result["foreignKey"]["constraintName"][$k],用來識別外鍵的CONSTRAINT名稱陣列,$k爲1開始的數字,也可以使用欄位的名稱。#$result["foreignKey"]["columnName"][$k],外鍵的名稱陣列,$k爲1開始的數字,也可以使用欄位的名稱。#$result["foreignKey"]["referencesTable"][$k],外鍵參照的欄位,$k爲1開始的數字,,也可用欄位的名稱來找value.#$result["foreignKey"]["referencesColumn"][$k],外鍵參照的欄位屬於哪個資料表,$k爲1開始的數字,也可用欄位的名稱來找value.#$result["foreignKey"]["onUpdateAction"][$i],當參照的欄位資料更新時,會怎麼同步,$i爲1開始的數字,也可用欄位的名稱來找value.#$result["foreignKey"]["onDeleteAction"][$i],當參照的欄位資料移除時,會怎麼同步,$i爲1開始的數字,也可用欄位的名稱來找value.#必填參數:$conf["db::getTableColumnDetailInfo"]["dbAddress"]=$conf["dbAddress"];#資料庫的網路位置$conf["db::getTableColumnDetailInfo"]["dbAccount"]=$conf["dbAccount"];#連線到資料庫要用的帳號$conf["db::getTableColumnDetailInfo"]["selectedDataBase"]=$conf["selectedDataBaseName"];#連線到資料庫要選擇的資料庫$conf["db::getTableColumnDetailInfo"]["selectedDataTable"]=$conf["selectedDataTableName"];#連線到資料庫要檢視的資料表#可省略參數:#如果 $conf["dbPassword"] 有設定if(isset($conf["dbPassword"])){#設定其密碼$conf["db::getTableColumnDetailInfo"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#設定 $conf["dbPort"]$conf["db::getTableColumnDetailInfo"]["dbPort"]=$conf["dbPort"];}#if end#備註:#如果forign key參照的是別的資料庫,將無法取得參照的資料庫名稱?$getTableColumnDetailInfo=db::getTableColumnDetailInfo($conf["db::getTableColumnDetailInfo"]);unset($conf["db::getTableColumnDetailInfo"]);#如果取得資料表資訊失敗if($getTableColumnDetailInfo["status"]=="false"){#設置錯誤訊息$result["status"]="false";#設置錯誤提示$result["error"]=$getTableColumnDetailInfo;#回傳結果return $result;}#if end#如果該欄位已經是index了if(isset($getTableColumnDetailInfo["key"][$conf["indexedColumnName"]])){#設置執行正常$result["status"]="true";#設置警告提示$result["warning"][]="已經是index key了";#回傳結果return $result;}#if end#組合sql語言$sql="alter table ".$conf["selectedDataBaseName"].".".$conf["selectedDataTableName"]." add index(`".$conf["indexedColumnName"]."`)";#執行sql語法#函式說明:#執行mysql指令#回傳結果::#$result["status"],"true"為執行成功;"false"為執行失敗。#$result["error"],錯誤訊息的陣列#$result["queryResource"],mysql查詢後的resource資源,用於給mysql解析的資源變數。#$result["queryString"],mysql查詢的語言#查詢號的解果,需要解析。#必填參數:$conf["db"]["execMysqlQuery"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["execMysqlQuery"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["execMysqlQuery"]["dbSql"]=$sql;#要執行sql語法#可省略參數:#如果 $conf["dbPassword"] 有設定if(isset($conf["dbPassword"])){#設定其密碼$conf["db"]["execMysqlQuery"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#設定 $conf["dbPort"]$conf["db"]["execMysqlQuery"]["dbPort"]=$conf["dbPort"];}#if end$queryResult=db::execMysqlQuery($conf["db"]["execMysqlQuery"]);unset($conf["db"]["execMysqlQuery"]);#取得執行的sql語法$result["sql"]=$queryResult["queryString"];#如果有錯誤if($queryResult["status"]=="false"){#設置錯誤訊息$result["status"]="false";#設置錯誤提示$result["error"]=$queryResult;#回傳結果return $result;}#if end#執行到這邊代表執行成功#設置成功訊息$result["status"]="true";#回傳結果return $result;}#function setColumnIndex end/*#函式說明:#取得資料表所有欄位的詳細資訊#回傳的內容:#$result["status"],執行結果,"true"代表執行成功;"false"代表執行失敗#$result["error"],錯誤訊息陣列#$result["function"],當前執行的函數名稱.#$result["sql"],執行的sql語法#$result["oriInput"],原始的資料表欄位資訊#$result["everyLine"],逐行的欄位資訊#$result["tableName"],當前查詢的資料表名稱#$result["engine"],資料表使用的儲存引擎#$result["charset"],資料表預設的編碼#$result["columnName"][$i],各欄位的名稱陣列,$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnVarTypeAndLengthLimit"][$i],各欄位儲存的變數形態與長度限制,$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnVarType"][$i],各欄位變數儲存的型態,$i爲1開始的數字,也可以使用欄位的名稱.#$result["columnVarLengthLimit"][$i],個欄位變數的長度限制,若不存在其限制,則為"",$i爲1開始的數字,也可以使用欄位的名稱.#$result["columnNotNull"][$i],各欄位是否不可爲null,"true"爲不可以爲null;"false"爲可爲"null",$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnAutoIncrement"][$i],各欄位是否會自動加1,"true"爲會;"false"爲不會,$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnDefault"][$i],各欄位的預設內容,若無則爲"沒有指定",$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnOnUpdateAction"][$i],當資料有修改時,該欄位的內容要怎麼因應,$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnCharacterSet"][$i],各欄位使用的CharacterSet,$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnCollate"][$i],各欄位使用的Collate,$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnComment"][$i],各欄位的註解,$i爲1開始的數字,也可以使用欄位的名稱。#$result["key"]["exist"],該資料表是否有索引鍵,"true"代表有;"false"代表沒有。#$result["key"][$j],該資料表的索引鍵陣列,$j爲0開始的數字,也可以使用欄位的名稱。#$result["keyConstraintName"][$j],該資料表用於識別索引鍵的CONSTRAINT名稱陣列,$j爲1開始的數字,也可以使用欄位的名稱。#$result["primaryKey"],該資料表的主鍵#$result["foreignKey"]["exist"],該資料表是否有foreign key,"true"代表有;"fasle"代表沒有。#$result["foreignKey"]["constraintName"][$k],用來識別外鍵的CONSTRAINT名稱陣列,$k爲1開始的數字,也可以使用欄位的名稱。#$result["foreignKey"]["columnName"][$k],外鍵的名稱陣列,$k爲1開始的數字,也可以使用欄位的名稱。#$result["foreignKey"]["referencesTable"][$k],外鍵參照的欄位,$k爲1開始的數字,,也可用欄位的名稱來找value.#$result["foreignKey"]["referencesColumn"][$k],外鍵參照的欄位屬於哪個資料表,$k爲1開始的數字,也可用欄位的名稱來找value.#$result["foreignKey"]["onUpdateAction"][$i],當參照的欄位資料更新時,會怎麼同步,$i爲1開始的數字,也可用欄位的名稱來找value.#$result["foreignKey"]["onDeleteAction"][$i],當參照的欄位資料移除時,會怎麼同步,$i爲1開始的數字,也可用欄位的名稱來找value.#必填參數:#$conf["dbAddress"],字串,資料庫的網路位置$conf["dbAddress"]="";#$conf["dbAccount"],字串,連線到資料庫要用的帳號$conf["dbAccount"]="";連線到資料庫要用的帳號#$conf["selectedDataBase"]字串,連線到資料庫要選擇的資料庫$conf["selectedDataBase"]=$dbName;#$conf["selectedDataTable"],字串,連線到資料庫要檢視的資料表$conf["selectedDataTable"]="";#可省略參數:#$conf["dbPassword"],字串,連線到資料庫要用的密碼#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,預設為3306.#$conf["dbPort"]="3306";#參考資料:#無.#備註:#如果forign key參照的是別的資料庫,將無法取得參照的資料庫名稱?*/public static function getTableColumnDetailInfo(&$conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數設定是否正確#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.#$result["argu"],字串陣列,目前輸入的參數名稱陣列.#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.#$result["notNeedVar"],字串陣列,多餘的參數名稱.#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("dbAddress","dbAccount","selectedDataBase","selectedDataTable");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string","string");#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可省略參數:#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.#$conf["canBeEmptyString"]="false";#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或集合.#$conf["skipableVariableCanNotBeEmpty"]=array();#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("dbPassword","dbPort");#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null);#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();#參考資料:#array_keys=>http://php.net/manual/en/function.array-keys.php$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果檢查失敗if($checkArguments["passed"]==="false"){#設置執行失敗識別$result["status"]="false";#設置錯誤訊息陣列$result["error"]=$checkArguments;#回傳結果return $result;}#if end#如果檢查不通過if($checkArguments["passed"]==="false"){#設置執行失敗識別$result["status"]="false";#設置錯誤訊息陣列$result["error"]=$checkArguments;#回傳結果return $result;}#if end#檢查資料庫 $conf["selectedDataBase"] 是否可以存取#確認資料庫存在或可以被存取#函式說明:#執行mysql指令#回傳結果:#$result["status"],"true"為執行成功;"false"為執行失敗。#$result["error"],錯誤訊息的陣列#$result["function"],當前執行的涵式#$result["queryResource"],mysql查詢後的resource資源,用於給mysql解析的資源變數。#$result["queryConn"],mysql用來查尋的連資源.#$result["queryString"],要執行的sql內容.#必填參數:#$conf["dbSql"],字串,要執行sql語法$conf["db::execMysqlQuery"]["dbSql"]="show databases;";#可省略參數:#$conf["dbLink"],物件,mysqli物件,由mysqli_connect()回傳的物件內容,若為數值則改用賬號密碼等資訊進行連線,反之則沿用連線物件.#$conf["db::execMysqlQuery"]["dbLink"]=$conf["connectInformation"];#$conf["dbAddress"],字串,爲mysql-Server的位置。$conf["db::execMysqlQuery"]["dbAddress"]=$conf["dbAddress"];#$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號。$conf["db::execMysqlQuery"]["dbAccount"]=$conf["dbAccount"];#如果存在 $conf["dbPassword"]if(isset($conf["dbPassword"])){#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼。$conf["db::execMysqlQuery"]["dbPassword"]=$conf["dbPassword"];}#if end#$conf["dbName"],字串,爲要連的資料庫名稱#$conf["dbName"]="";#如果存在 $dbPortif(isset($conf["dbPort"])){#$conf["dbPort"],字串,為連線到mysql-Server時對應的port,可省略,預設為3306.$conf["db::execMysqlQuery"]["dbPort"]=$conf["dbPort"];}#if end#$conf["autoClose"],字串,"true"代表要自動斷線,預設為"true"會自動斷線#$conf["autoClose"]="true";#參考資料:#無.#備註:#無.$execMysqlQuery=db::execMysqlQuery($conf["db::execMysqlQuery"]);unset($conf["db::execMysqlQuery"]);#如果執行失敗if($execMysqlQuery["status"]==="false"){#設置連線失敗的提示$result["error"][]="檢查資料庫可否存取出錯";#設置錯誤訊息$result["error"][]=$execMysqlQuery["error"];#設置執行失敗$result["status"]="false";#回傳結果return $result;}#if end#解析 $execMysqlQuery["queryResource"] 看是否存在要存取的資料庫#函式說明:#解析 dataTableSelect($conf) 後的結果,亦即將執行sql語法後所得到的結果解析放進變數裏面#回傳結果:#$result["status"],執行結果"true"為成功;"false"為失敗#$result["error"],錯誤訊息#$result["function"],儲存當前函數名稱#$result["dataColumnName"],為資料欄位的名稱陣列.#$result["dataColumnName"][$i]代表第一個欄位名稱.#$result["dataContent"],爲資料的內容陣列,第1維度的key為$conf["tableValueName"][$i],亦即第 $i+1 個欄位的名稱,若該欄位不存在,則其value為空字串;第2維度的key為第$i+1筆資料的索引.#$result["dataCount"],爲取得的資料筆數.#必填參數:#$conf["sqlQueryResult"],object,爲執行sql語法所獲得的查詢結果。$conf["db::sendQueryDataToVariabele"]["sqlQueryResult"]=$execMysqlQuery["queryResource"];#$conf["tableValueName"],字串陣列,爲該資料表列項目的每一項名稱,須爲陣列值,若為「array("*")」則代表所有欄位.$conf["db::sendQueryDataToVariabele"]["tableValueName"]=array("Database");#可省略參數:#$conf["dbAddress"],字串,爲mysql-Server的位置,目前沒有用途.#$conf["dbAddress"]=$dbAddress;#$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號,目前沒有用途.#$conf["dbAccount"]=$dbAccount;#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼,目前沒有用途.#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,可省略,若省略則代表使用預設的3306 port,目前沒有用途.#$conf["dbPort"]="";#$conf["valueName"],字串陣列,爲該資料表列項目的每一項所要對應的變數名稱,預設為欄位的名稱($conf["tableValueName"]).#$conf["valueName"]=$conf["tableValueName"];#參考資料:#http://www.w3school.com.cn/php/func_mysql_fetch_array.asp => 解析取得的資料表欄位時,能夠選擇回傳含有欄位名稱與數字代表的key.#備註:#無.$sendQueryDataToVariabele=db::sendQueryDataToVariabele($conf["db::sendQueryDataToVariabele"]);unset($conf["db::sendQueryDataToVariabele"]);#如果執行異常if($sendQueryDataToVariabele["status"]==="false"){#設置連線失敗的提示$result["error"][]="檢查資料庫可否存取出錯";#設置錯誤訊息$result["error"][]=$sendQueryDataToVariabele["error"];#設置執行失敗$result["status"]="false";#回傳結果return $result;}#if end#檢查資料庫是否可以存取#函式說明:#檢查一個數值是否與陣列裏面的元素相同,找到一個相符合的元素後就會停止搜尋.#回傳結果:#$result["status"],"true"表示執行正確,"false"表示執行錯誤.#$result["founded"],"true"表示有找到相同的,"false"表示沒有找到相同的.#$result["error"],錯誤訊息#$result["function"],當前執行的函數名稱#$result["argv"],使用的參數#$result["equalVarName"],相等的變數名稱或key.#$result["equalVarValue"],相等的變數數值內容.#必填參數:#$conf["conditionElement"],字串,條件元素,要等於的元素內容.$conf["search::getEqualVar"]["conditionElement"]=$conf["selectedDataBase"];#$conf["compareElements"],字串陣列,要比對的陣列變數內容.$conf["search::getEqualVar"]["compareElements"]=$sendQueryDataToVariabele["dataContent"]["Database"];#可省略參數:#無.#參考資料:#無.#備註:#無.$getEqualVar=search::getEqualVar($conf["search::getEqualVar"]);unset($conf["search::getEqualVar"]);#如果執行失敗if($getEqualVar["status"]==="false"){#設置錯誤的提示$result["error"][]="檢查資料庫可否存取出錯";#設置錯誤訊息$result["error"][]=$getEqualVar["error"];#設置執行失敗$result["status"]="false";#回傳結果return $result;}#if end#如果無法存取資料庫if($getEqualVar["founded"]==="false"){#設置錯誤的提示$result["error"][]="資料庫(".$conf["selectedDataBase"].")無法存取";#設置錯誤訊息$result["error"][]=$getEqualVar;#設置執行失敗$result["status"]="false";#回傳結果return $result;}#if end#設置要執行的sql語法$sql="SHOW CREATE TABLE ".$conf["selectedDataBase"].".".$conf["selectedDataTable"].";";#執行sql語法#函式說明:#執行mysql指令#回傳結果:#$result["status"],"true"為執行成功;"false"為執行失敗。#$result["error"],錯誤訊息的陣列#$result["queryResource"],mysql查詢後的resource資源,用於給mysql解析的資源變數。#$result["queryString"],mysql查詢的語言#查詢號的解果,需要解析。#必填參數:$conf["db"]["execMysqlQuery"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["execMysqlQuery"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["execMysqlQuery"]["dbSql"]=$sql;#要執行sql語法#可省略參數:#如果 $conf["dbPassword"] 有設定if(isset($conf["dbPassword"])){#設定其密碼$conf["db"]["execMysqlQuery"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#設定 $conf["dbPort"]$conf["db"]["execMysqlQuery"]["dbPort"]=$conf["dbPort"];}#if end$queryResult=db::execMysqlQuery($conf["db"]["execMysqlQuery"]);unset($conf["db"]["execMysqlQuery"]);#如果有錯誤if($queryResult["status"]=="false"){#設置錯誤訊息$result["status"]="false";#設置錯誤提示$result["error"]=$queryResult;#回傳結果return $result;}#if end#解析mysql resource#初始化暫存的變數$temp="";#將讀取到的資料一次只讀取一列while($row = mysqli_fetch_array($queryResult["queryResource"])){#$i筆項列資料,則運行$i次。foreach($row as $key=>$value){#如果key爲"Create Table"if($key=="Create Table"){#將解析的資料內容結果放進$temp變數裏面$temp=$value;}#if end}#foreach end}#while end#逐行解析$temp#函式說明:#將多行內容的字串,依行切割#回傳的參數:#$result["status"],執行成功與否,若爲"true",代表執行成功,若爲"false"代表執失敗。#$result["error"],錯誤訊息陣列.#$result["function"],當前執行的函數名稱.#$result["oriStr"],要分割的原始字串內容#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲以行分割好的字串陣列內容,$result["dataArray"][$i]爲第($i+1)行的內容。#$result["dataCounts"],爲總共分成幾行#必填參數:$conf["stringProcess"]["spiltMutiLineString"]["stringIn"]=$temp;#要處理的多行文字字串。#參考資料來源:#http://dragonspring.pixnet.net/blog/post/33146613-%5blinux%5d%5btips%5d%e5%8e%bb%e9%99%a4dos%e6%aa%94%e6%a1%88%e8%a1%8c%e5%b0%be%e7%9a%84%5em => windows 與 linux 換行字元$everyLine=stringProcess::spiltMutiLineString($conf["stringProcess"]["spiltMutiLineString"]);unset($conf["stringProcess"]["spiltMutiLineString"]);#如果 逐行解析$temp 失敗if($everyLine["status"]==="false"){#設置錯誤訊息$result["status"]="false";#設置錯誤提示$result["error"]=$everyLine;#回傳結果return $result;}#if end#針對每列內容foreach($everyLine["dataArray"] as $no => $line){#函式說明:#取得符合特定字首與字尾的字串#回傳結果::#$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。#$result["function"],當前執行的函數名稱.#$result["error"],錯誤訊息陣列.#$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。#$result["returnString"],爲符合字首條件的字串內容。#$result["argu"],使用的參數.#必填參數:#$conf["checkString"],字串,要檢查的字串.$conf["search::getMeetConditionsString"]["checkString"]=$line;#可省略參數:#$conf["frontWord"],字串,用來檢查字首應該要有什麼字串,預設不指定.$conf["search::getMeetConditionsString"]["frontWord"]="/*";#$conf["tailWord"],字串,用來檢查字尾應該要有什麼字串,預設不指定.#$conf["tailWord"]="";#參考資料:#str_spilt(),可以將字串依照字母分割成一個個陣列字串。$getMeetConditionsString=search::getMeetConditionsString($conf["search::getMeetConditionsString"]);unset($conf["search::getMeetConditionsString"]);#如果執行失敗if($getMeetConditionsString["status"]==="false"){#設置錯誤訊息$result["status"]="false";#設置錯誤提示$result["error"]=$getMeetConditionsString;#回傳結果return $result;}#if end#如果執行失敗if($getMeetConditionsString["founded"]==="true"){#while loopwhile(true){#移除 partion 描述 - start#如果存在該列if(isset($everyLine["dataArray"][$no])){#卸除之unset($everyLine["dataArray"][$no]);#行數加1$no++;}#if end#移除 partion 描述 - end#反之else{//end whilebreak;}#else end}#while loop end#end foreachbreak;}#if end}#foreach end#重新更新總行數$everyLine["dataCounts"]=count($everyLine["dataArray"]);#取得原始輸入的多行字串$result["oriInput"]=$everyLine["oriStr"];#取得原始的每一行$result["everyLine"]=$everyLine["dataArray"];#取得資料表名稱#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$everyLine["dataArray"][0];#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]="`";#爲以哪個符號作爲分割$tableName=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#如果 取得資料表名稱 失敗if($tableName["status"]=="false"){#設置錯誤訊息$result["status"]="false";#設置錯誤提示$result["error"]=$tableName;#回傳結果return $result;}#if end#取得資料表名稱$result["tableName"]=$tableName["dataArray"][1];#取得資料表用的 ENGINE 與 DEFAULT CHARSET",亦即最後一行的內容.#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$everyLine["dataArray"][$everyLine["dataCounts"]-1];#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]=" ";#爲以哪個符號作爲分割$engineAndCharset=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#如果 取得資料表用的 ENGINE與DEFAULT CHARSET" 失敗if($engineAndCharset["status"]=="false"){#設置錯誤訊息$result["status"]="false";#設置錯誤提示$result["error"]=$engineAndCharset;#回傳結果return $result;}#if end#get engine string$engine=$engineAndCharset["dataArray"][1];#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$engine;#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]="=";#爲以哪個符號作爲分割$engine=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#如果 取得資料表用的 ENGINE與DEFAULT CHARSET" 失敗if($engine["status"]=="false"){#設置錯誤訊息$result["status"]="false";#設置錯誤提示$result["error"]=$engine;#回傳結果return $result;}#if end#如果不存在 engineif(!isset($engine["dataArray"][1])){#設置錯誤訊息$result["status"]="false";#設置錯誤提示$result["error"]=$engine;return $result;}#if end#get engine$result["engine"]=$engine["dataArray"][1];#取得字元編碼#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$engineAndCharset["oriStr"];#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]="CHARSET=";#爲以哪個符號作爲分割$charset=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#如果 取得字元編碼 失敗if($charset["status"]=="false"){#設置錯誤訊息$result["status"]="false";#設置錯誤提示$result["error"]=$charset;#回傳結果return $result;}#if end#取得字元編碼#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$charset["dataArray"][1];#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]=" ";#爲以哪個符號作爲分割$charset=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#如果 取得字元編碼 失敗if($charset["status"]=="false"){#設置錯誤訊息$result["status"]="false";#設置錯誤提示$result["error"]=$charset;#回傳結果return $result;}#if end#取得字元編碼$result["charset"]=$charset["dataArray"][0];#初始化,儲存鍵值定義的陣列變數$keyDefine=array();#逐行取得各欄位詳細資料for($i=1;$i<$everyLine["dataCounts"]-1;$i++){#檢查開頭是否爲 " `"#函式說明:#取得符合特定字首與字尾的字串#回傳結果::#$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。#$result["function"],當前執行的函數名稱.#$result["error"],錯誤訊息陣列.#$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。#$result["returnString"],爲符合字首條件的字串內容。#必填參數:#$conf["checkString"],字串,要檢查的字串.$conf["search::getMeetConditionsString"]["checkString"]=$everyLine["dataArray"][$i];#可省略參數:#$conf["frontWord"],字串,用來檢查字首應該要有什麼字串,預設不指定.$conf["search::getMeetConditionsString"]["frontWord"]=" `";#$conf["tailWord"],字串,用來檢查字尾應該要有什麼字串,預設不指定.#$conf["tailWord"]="";#參考資料:#str_spilt(),可以將字串依照字母分割成一個個陣列字串。$getMeetConditionsString=search::getMeetConditionsString($conf["search::getMeetConditionsString"]);unset($conf["search::getMeetConditionsString"]);#如果分割失敗if($getMeetConditionsString["status"]==="false"){#設置錯誤訊息$result["status"]="false";#設置錯誤提示$result["error"]=$getMeetConditionsString;#回傳結果return $result;}#if end#如果有符合的前戳if($getMeetConditionsString["founded"]==="true"){#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$everyLine["dataArray"][$i];#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]="`";#爲以哪個符號作爲分割$columnString=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#如果 分割字串失敗 失敗if($columnString["status"]==="false"){#設置錯誤訊息$result["status"]="false";#設置錯誤提示$result["error"]=$columnString;#回傳結果return $result;}#if end#取得欄位名稱$result["columnName"][$i]=$columnString["dataArray"][1];$result["columnName"][$result["columnName"][$i]]=$result["columnName"][$i];#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$columnString["dataArray"][2];#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]=" ";#爲以哪個符號作爲分割$columnString=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#debug#var_dump($columnString);#如果 分割字串失敗 失敗if($columnString["status"]==="false"){#設置錯誤訊息$result["status"]="false";#設置錯誤提示$result["error"]=$columnString;#回傳結果return $result;}#if end#取得欄位屬性與長度$result["columnVarTypeAndLengthLimit"][$i]=$columnString["dataArray"][0];$result["columnVarTypeAndLengthLimit"][$result["columnName"][$i]]=$columnString["dataArray"][0];}#if end#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$everyLine["dataArray"][$i];#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]=" ";#爲以哪個符號作爲分割$columnString=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#如果 分割字串失敗 失敗if($columnString["status"]=="false"){#設置錯誤訊息$result["status"]="false";#設置錯誤提示$result["error"]=$columnString;#回傳結果return $result;}#if end#如果分割字串失敗if($columnString["status"]==="false"){#設置執行失敗$reuslt["status"]="false";#設置錯誤訊息$result["error"]=$columnString;#回傳結果return $result;}#if end#debug#var_dump($columnString);#判斷該 $columnString["dataArray"][2]是一般名稱,還是鍵值定義。#函式說明:#檢查字串裡面有無指定的關鍵字#回傳結果::#$result["status"],"true"代表執行成功,"false"代表執行失敗。#$result["error"],錯誤訊息#$result["founded"],是否找到關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字。#必填參數:$conf["search"]["findKeyWord"]["keyWord"]="`";#想要搜尋的關鍵字$conf["search"]["findKeyWord"]["string"]=$columnString["dataArray"][2];#要被搜尋的字串內容#可省略參數:#$conf["search"]["findKeyWord"]["completeEqual"]="true";#是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。$searchResult=search::findKeyWord($conf["search"]["findKeyWord"]);unset($conf["search"]["findKeyWord"]);#如果尋找失敗if($searchResult["status"]==="false"){#設置執行失敗$reuslt["status"]="false";#設置錯誤訊息$result["error"]=$columnString;#回傳結果return $result;}#if end#如果有找到,且沒有長度與形態資訊if($searchResult["founded"]==="true" && !isset($result["columnVarTypeAndLengthLimit"][$i]) ){#代表是屬於鍵值的定義$keyDefine[]=$everyLine["dataArray"][$i];#var_dump($keyDefine);#跳過該行內容continue;}#if end#判斷該 $columnString["dataArray"][0]是否為 "CONSTRAINT" 或 "KEY"if($columnString["dataArray"][0]==="CONSTRAINT" || $columnString["dataArray"][0]==="KEY"){#代表是屬於定義 外鍵 的 CONSTRAINT 定義$keyDefine[]=$everyLine["dataArray"][$i];#跳過該行內容continue;}#if end#函式說明:#處理字串避免網頁出錯#回傳結果::#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數.#$result["content"],爲處理好的字串.#$result["error"],錯誤訊息陣列.#必填參數:$conf["stringProcess"]["correctCharacter"]["stringIn"]=$columnString["dataArray"][0];#爲要處理的字串#可省略參數:$conf["stringProcess"]["correctCharacter"]["selectedCharacter"]=array("`");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">",";","=","//","'","$","%","&","|","/*","*\/","#")。#$conf["stringProcess"]["correctCharacter"]["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$correctCharacterResult=stringProcess::correctCharacter($conf["stringProcess"]["correctCharacter"]);unset($conf["stringProcess"]);#如果處理字串失敗if($correctCharacterResult["status"]==="false"){#設置執行失敗$reuslt["status"]="false";#設置錯誤訊息$result["error"]=$correctCharacterResult;#回傳結果return $result;}#if end#如果不是 "CONSTRAINT" 且 存在 $result["columnVarTypeAndLengthLimit"][$i]if($correctCharacterResult["content"]!=="CONSTRAINT" && isset($result["columnVarTypeAndLengthLimit"][$i])){#取得欄位名稱,遇到有空格的欄位名稱會出錯#$result["columnName"][$i]=$correctCharacterResult["content"];#$result["columnName"][$correctCharacterResult["content"]]=$correctCharacterResult["content"];#取得欄位變數形態與長度限制,遇到有空格的欄位名稱會出錯#$result["columnVarTypeAndLengthLimit"][$i]=$columnString["dataArray"][1];#$result["columnVarTypeAndLengthLimit"][$result["columnName"][$i]]=$columnString["dataArray"][1];#檢查是否有欄位的長度限制關鍵字 "(" ")"#函式說明:#檢查一個字串裡面是否有多個關鍵字#回傳結果::#$result["status"],"true"代表執行成功,"false"代表執行失敗。#$result["error"],錯誤訊息#$result["founded"],是否找到所有的關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字。#必填參數:$conf["search"]["findManyKeyWords"]["keyWords"]=array("(",")");#想要搜尋的關鍵字$conf["search"]["findManyKeyWords"]["string"]=$result["columnVarTypeAndLengthLimit"][$i];#要被搜尋的字串內容#可省略參數:#$conf["search"]["findManyKeyWords"]["completeEqual"]="true";#是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。$lengthLimitKeyWordSearchResult=search::findManyKeyWords($conf["search"]["findManyKeyWords"]);unset($conf["search"]["findManyKeyWords"]);#如果 檢查是否有欄位的長度限制關鍵字 "(" ")" 失敗if($lengthLimitKeyWordSearchResult["status"]==="false"){#設置執行失敗$reuslt["status"]="false";#設置錯誤訊息$result["error"]=$lengthLimitKeyWordSearchResult;#回傳結果return $result;}#if end#如果 $lengthLimitKeyWordSearchResult["founded"] 等於 "true"if($lengthLimitKeyWordSearchResult["foundedAll"]==="true"){#代表有長度限制的字串#以"("為關鍵字進行分割#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$result["columnVarTypeAndLengthLimit"][$i];#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]="(";#爲以哪個符號作爲分割$columnTypeAndLengthLimitSpiledStr=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#如果分割字串失敗if($columnTypeAndLengthLimitSpiledStr["status"]==="false"){#設置執行失敗$reuslt["status"]="false";#設置錯誤訊息$result["error"]=$columnTypeAndLengthLimitSpiledStr;#回傳結果return $result;}#if end#取得欄位變數型別$result["columnVarType"][$i]=$columnTypeAndLengthLimitSpiledStr["dataArray"][0];$result["columnVarType"][$result["columnName"][$i]]=$columnTypeAndLengthLimitSpiledStr["dataArray"][0];#以")"為關鍵字進行分割#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$columnTypeAndLengthLimitSpiledStr["dataArray"][1];#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]=")";#爲以哪個符號作爲分割$columnTypeAndLengthLimitSpiledStr=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#如果分割字串失敗if($columnTypeAndLengthLimitSpiledStr["status"]==="false"){#設置執行失敗$reuslt["status"]="false";#設置錯誤訊息$result["error"]=$columnTypeAndLengthLimitSpiledStr;#回傳結果return $result;}#if end#取得欄位的長度限制$result["columnVarLengthLimit"][$i]=$columnTypeAndLengthLimitSpiledStr["dataArray"][0];$result["columnVarLengthLimit"][$result["columnName"][$i]]=$columnTypeAndLengthLimitSpiledStr["dataArray"][0];}#if end#反之代表沒有長度限制的字串else{#取得欄位變數型別$result["columnVarType"][$i]=$result["columnVarTypeAndLengthLimit"][$i];$result["columnVarType"][$result["columnName"][$i]]=$result["columnVarTypeAndLengthLimit"][$i];#取得欄位變數長度限制$result["columnVarLengthLimit"][$i]="";$result["columnVarLengthLimit"][$result["columnName"][$i]]="";}#else#欄位是否不可為null#函式說明:#檢查字串裡面有無指定的關鍵字#回傳結果::#$result["status"],"true"代表執行成功,"false"代表執行失敗。#$result["error"],錯誤訊息#$result["founded"],是否找到關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字。#必填參數:$conf["search"]["findKeyWord"]["keyWord"]="NOT NULL";#想要搜尋的關鍵字$conf["search"]["findKeyWord"]["string"]=$everyLine["dataArray"][$i];#要被搜尋的字串內容#可省略參數:#$conf["search"]["findKeyWord"]["completeEqual"]="true";#是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。$searchResult=search::findKeyWord($conf["search"]["findKeyWord"]);unset($conf["search"]["findKeyWord"]);#如果取得 欄位是否不可為null 失敗if($searchResult["status"]==="false"){#設置執行失敗$reuslt["status"]="false";#設置錯誤訊息$result["error"]=$searchResult;#回傳結果return $result;}#if end#如果有找到 NOT NULLif($searchResult["founded"]==="true"){$result["columnNotNull"][$i]="true";$result["columnNotNull"][$result["columnName"][$i]]="true";}#if end#反之沒有找到 NOT NULLelse{$result["columnNotNull"][$i]="false";$result["columnNotNull"][$result["columnName"][$i]]="false";}#else end#欄位是否會自動加1#函式說明:#檢查字串裡面有無指定的關鍵字#回傳結果::#$result["status"],"true"代表執行成功,"false"代表執行失敗。#$result["error"],錯誤訊息#$result["founded"],是否找到關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字。#必填參數:$conf["search"]["findKeyWord"]["keyWord"]="AUTO_INCREMENT";#想要搜尋的關鍵字$conf["search"]["findKeyWord"]["string"]=$everyLine["dataArray"][$i];#要被搜尋的字串內容#可省略參數:#$conf["search"]["findKeyWord"]["completeEqual"]="true";#是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。$searchResult=search::findKeyWord($conf["search"]["findKeyWord"]);unset($conf["search"]["findKeyWord"]);#如果取得 欄位是否會自動加1 失敗if($searchResult["status"]==="false"){#設置執行失敗$reuslt["status"]="false";#設置錯誤訊息$result["error"]=$searchResult;#回傳結果return $result;}#if end#如果有找到 AUTO_INCREMENTif($searchResult["founded"]==="true"){$result["columnAutoIncrement"][$i]="true";$result["columnAutoIncrement"][$result["columnName"][$i]]="true";}#if end#反之沒有 AUTO_INCREMENTelse{$result["columnAutoIncrement"][$i]="false";$result["columnAutoIncrement"][$result["columnName"][$i]]="false";}#else end#欄位是否有預設內容#函式說明:#檢查字串裡面有無指定的關鍵字#回傳結果::#$result["status"],"true"代表執行成功,"false"代表執行失敗。#$result["error"],錯誤訊息#$result["founded"],是否找到關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字。#必填參數:$conf["search"]["findKeyWord"]["keyWord"]="DEFAULT";#想要搜尋的關鍵字$conf["search"]["findKeyWord"]["string"]=$everyLine["dataArray"][$i];#要被搜尋的字串內容#可省略參數:#$conf["search"]["findKeyWord"]["completeEqual"]="true";#是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。$searchResult=search::findKeyWord($conf["search"]["findKeyWord"]);unset($conf["search"]["findKeyWord"]);#如果取得 欄位是否有預設內容 失敗if($searchResult["status"]==="false"){#設置執行失敗$reuslt["status"]="false";#設置錯誤訊息$result["error"]=$searchResult;#回傳結果return $result;}#if end#如果有找到 DEFAULTif($searchResult["founded"]==="true"){#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$everyLine["dataArray"][$i];#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]="DEFAULT ";#爲以哪個符號作爲分割$defaultString=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#如果分割字串失敗if($defaultString["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$defaultString;#回傳結果return $result;}#if end#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$defaultString["dataArray"][1];#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]=" ";#爲以哪個符號作爲分割$defaultString=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#如果分割字串失敗if($defaultString["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$defaultString;#回傳結果return $result;}#if end#將「,」,「'」去掉#函式說明:#處理字串避免網頁出錯#回傳結果::#$result,爲處理好的字串。#必填參數:$conf["stringProcess"]["correctCharacter"]["stringIn"]=$defaultString["dataArray"][0];#爲要處理的字串#可省略參數:$conf["stringProcess"]["correctCharacter"]["selectedCharacter"]=array(",","'");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">",";","=","//","'","$","%","&","|","/*","*\/","#")。#$conf["stringProcess"]["correctCharacter"]["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$thisColumnDefaultValue=stringProcess::correctCharacter($conf["stringProcess"]["correctCharacter"]);unset($conf["stringProcess"]["correctCharacter"]);#如果處理字串失敗if($thisColumnDefaultValue["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$thisColumnDefaultValue;#回傳結果return $result;}#if end#取得該欄位的預設內容$result["columnDefault"][$i]=$thisColumnDefaultValue["content"];$result["columnDefault"][$result["columnName"][$i]]=$thisColumnDefaultValue["content"];}#if end#反之沒有找到 DEFAULTelse{$result["columnDefault"][$i]="沒有指定";$result["columnDefault"][$result["columnName"][$i]]=$result["columnDefault"][$i];}#else end#如果有欄位內有 ON UPDATE 的字樣#函式說明:#檢查字串裡面有無指定的關鍵字#回傳結果::#$result["status"],"true"代表執行成功,"false"代表執行失敗。#$result["error"],錯誤訊息#$result["founded"],是否找到關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字。#必填參數:$conf["search"]["findKeyWord"]["keyWord"]="ON UPDATE";#想要搜尋的關鍵字$conf["search"]["findKeyWord"]["string"]=$everyLine["dataArray"][$i];#要被搜尋的字串內容#可省略參數:#$conf["search"]["findKeyWord"]["completeEqual"]="true";#是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。$searchResult=search::findKeyWord($conf["search"]["findKeyWord"]);unset($conf["search"]["findKeyWord"]);#如果尋找 欄位內是否有 ON UPDATE 的字樣失敗if($searchResult["status"]==="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$searchResult;#回傳結果return $result;}#if end#如果有找到 ON UPDATEif($searchResult["founded"]==="true"){#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$everyLine["dataArray"][$i];#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]="ON UPDATE ";#爲以哪個符號作爲分割$onUpdateString=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$onUpdateString["dataArray"][1];#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]=" ";#爲以哪個符號作爲分割$onUpdateString=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#如果分割字串失敗if($onUpdateString["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$onUpdateString;#回傳結果return $result;}#if end#將「,」去掉#函式說明:#處理字串避免網頁出錯#回傳結果::#$result,爲處理好的字串。#必填參數:$conf["stringProcess"]["correctCharacter"]["stringIn"]=$onUpdateString["dataArray"][0];#爲要處理的字串#可省略參數:$conf["stringProcess"]["correctCharacter"]["selectedCharacter"]=array(",");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">",";","=","//","'","$","%","&","|","/*","*\/","#")。#$conf["stringProcess"]["correctCharacter"]["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$columnOnUpdateActionStr=stringProcess::correctCharacter($conf["stringProcess"]["correctCharacter"]);unset($conf["stringProcess"]["correctCharacter"]);#如果 處理字串失敗if($columnOnUpdateActionStr["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$columnOnUpdateActionStr;#回傳結果return $result;}#if end#取得 ON UPDATE 的對應動作$result["columnOnUpdateAction"][$result["columnName"][$i]]=$columnOnUpdateActionStr["content"];$result["columnOnUpdateAction"][$i]=$columnOnUpdateActionStr["content"];}#if end#反之,沒有 ON UPDATE 的對應動作else{$result["columnOnUpdateAction"][$i]="沒有指定";$result["columnOnUpdateAction"][$result["columnName"][$i]]=$result["columnOnUpdateAction"][$i];}#else end}#if end#如果有欄位內有 CHARACTER SET 的字樣#函式說明:#檢查字串裡面有無指定的關鍵字#回傳結果::#$result["status"],"true"代表執行成功,"false"代表執行失敗。#$result["error"],錯誤訊息#$result["founded"],是否找到關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字。#必填參數:$conf["search"]["findKeyWord"]["keyWord"]="CHARACTER SET";#想要搜尋的關鍵字$conf["search"]["findKeyWord"]["string"]=$everyLine["dataArray"][$i];#要被搜尋的字串內容#可省略參數:#$conf["search"]["findKeyWord"]["completeEqual"]="true";#是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。$searchResult=search::findKeyWord($conf["search"]["findKeyWord"]);unset($conf["search"]["findKeyWord"]);#如果尋找關鍵字失敗if($searchResult["status"]==="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$searchResult;#回傳結果return $result;}#if end#如果有找到 CHARACTER SETif($searchResult["founded"]==="true"){#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$everyLine["dataArray"][$i];#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]="CHARACTER SET ";#爲以哪個符號作爲分割$characterSetString=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#如果分割字串失敗if($characterSetString["status"]==="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$characterSetString;#回傳結果return $result;}#if end#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$characterSetString["dataArray"][1];#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]=" ";#爲以哪個符號作爲分割$characterSetString=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#如果分割字串失敗if($characterSetString["status"]==="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$characterSetString;#回傳結果return $result;}#if end#將「,」去掉#函式說明:#處理字串避免網頁出錯#回傳結果::#$result,爲處理好的字串。#必填參數:$conf["stringProcess"]["correctCharacter"]["stringIn"]=$characterSetString["dataArray"][0];#爲要處理的字串#可省略參數:$conf["stringProcess"]["correctCharacter"]["selectedCharacter"]=array(",");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">",";","=","//","'","$","%","&","|","/*","*\/","#")。#$conf["stringProcess"]["correctCharacter"]["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$processedCharacterSetStr=stringProcess::correctCharacter($conf["stringProcess"]["correctCharacter"]);unset($conf["stringProcess"]["correctCharacter"]);#如果處理字串失敗if($processedCharacterSetStr["status"]==="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$processedCharacterSetStr;#回傳結果return $result;}#if end#取得CHARACTER SET的設定字串$result["columnCharacterSet"][$i]=$processedCharacterSetStr["content"];$result["columnCharacterSet"][$result["columnName"][$i]]=$processedCharacterSetStr["content"];}#if end#反之,沒有 CHARACTER SET 字樣else{#如果存在該欄位if(isset($result["columnName"][$i])){#採用預設的 $result["charset"]$result["columnCharacterSet"][$i]=$result["charset"];$result["columnCharacterSet"][$result["columnName"][$i]]=$result["columnCharacterSet"][$i];}#if end}#else end#檢查是否有 COLLATE 字樣...#函式說明:#檢查字串裡面有無指定的關鍵字#回傳結果::#$result["status"],"true"代表執行成功,"false"代表執行失敗。#$result["error"],錯誤訊息#$result["founded"],是否找到關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字。#必填參數:$conf["search"]["findKeyWord"]["keyWord"]="COLLATE";#想要搜尋的關鍵字$conf["search"]["findKeyWord"]["string"]=$everyLine["dataArray"][$i];#要被搜尋的字串內容#可省略參數:#$conf["search"]["findKeyWord"]["completeEqual"]="true";#是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。$searchResult=search::findKeyWord($conf["search"]["findKeyWord"]);unset($conf["search"]["findKeyWord"]);#如果尋找關鍵字失敗if($searchResult["status"]==="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$searchResult;#回傳結果return $result;}#if end#如果有找到 CHARACTER SETif($searchResult["founded"]==="true"){#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$everyLine["dataArray"][$i];#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]="COLLATE ";#爲以哪個符號作爲分割$collateString=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#如果分割字串失敗if($collateString["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$searchResult;#回傳結果return $result;}#if end#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$collateString["dataArray"][1];#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]=" ";#爲以哪個符號作爲分割$collateString=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#如果分割字串失敗if($collateString["status"]==="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$searchResult;#回傳結果return $result;}#if end#將「,」去掉#函式說明:#處理字串避免網頁出錯#回傳結果::#$result,爲處理好的字串。#必填參數:$conf["stringProcess"]["correctCharacter"]["stringIn"]=$collateString["dataArray"][0];#爲要處理的字串#可省略參數:$conf["stringProcess"]["correctCharacter"]["selectedCharacter"]=array(",");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">",";","=","//","'","$","%","&","|","/*","*\/","#")。#$conf["stringProcess"]["correctCharacter"]["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$thisColumnCollate=stringProcess::correctCharacter($conf["stringProcess"]["correctCharacter"]);unset($conf["stringProcess"]["correctCharacter"]);#如果處理字串失敗if($thisColumnCollate["status"]==="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$thisColumnCollate;#回傳結果return $result;}#if end#儲存 COLLATE 資訊字串$result["columnCollate"][$i]=$thisColumnCollate["content"];$result["columnCollate"][$result["columnName"][$i]]=$thisColumnCollate["content"];}#if end#反之,沒有 COLLATE 字樣else{#如果存在該欄位if(isset($result["columnName"][$i])){$result["columnCollate"][$i]="沒有指定";$result["columnCollate"][$result["columnName"][$i]]=$result["columnCollate"][$i];}#if end}#else end#檢查是否有COMMENT字樣#函式說明:#檢查字串裡面有無指定的關鍵字#回傳結果::#$result["status"],"true"代表執行成功,"false"代表執行失敗。#$result["error"],錯誤訊息#$result["founded"],是否找到關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字。#必填參數:$conf["search"]["findKeyWord"]["keyWord"]="COMMENT";#想要搜尋的關鍵字$conf["search"]["findKeyWord"]["string"]=$everyLine["dataArray"][$i];#要被搜尋的字串內容#可省略參數:#$conf["search"]["findKeyWord"]["completeEqual"]="true";#是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。$searchResult=search::findKeyWord($conf["search"]["findKeyWord"]);unset($conf["search"]);#如果尋找關鍵字失敗if($searchResult["status"]==="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$searchResult;#回傳結果return $result;}#if end#如果有 COMMENT 字樣if($searchResult["founded"]==="true"){#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$everyLine["dataArray"][$i];#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]="COMMENT ";#爲以哪個符號作爲分割$commentString=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#如果分割字串失敗if($commentString["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$commentString;#回傳結果return $result;}#if end#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$commentString["dataArray"][1];#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]="'";#爲以哪個符號作爲分割$commentString=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#如果分割字串失敗if($commentString["status"]==="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$commentString;#回傳結果return $result;}#if end#取得該欄位的註解內容$result["columnComment"][$i]=$commentString["dataArray"][0];$result["columnComment"][$result["columnName"][$i]]=$commentString["dataArray"][0];}#if end#反之,沒有 COMMENT 字樣else{#如果存在該欄位if(isset($result["columnName"][$i])){#設置該欄位沒有註解$result["columnComment"][$i]="沒有註解";$result["columnComment"][$result["columnName"][$i]]="沒有註解";}#if end}#else end}#for end#初始化索引鍵的陣列$result["key"]=array();#依據有幾個鍵值的定義來執行foreach($keyDefine as $unClassifyString){#依據第一個單字來進行判斷#可能的有:#PRIMARY KEY,主鍵#KEY,索引鍵#CONSTRAINT,外鍵#如果找到 PRIMARY KEY#函式說明:#檢查字串裡面有無指定的關鍵字#回傳結果::#$result["status"],"true"代表執行成功,"false"代表執行失敗。#$result["error"],錯誤訊息#$result["founded"],是否找到關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字。#必填參數:$conf["search"]["findKeyWord"]["keyWord"]="PRIMARY KEY";#想要搜尋的關鍵字$conf["search"]["findKeyWord"]["string"]=$unClassifyString;#要被搜尋的字串內容#可省略參數:#$conf["search"]["findKeyWord"]["completeEqual"]="true";#是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。$searchResult=search::findKeyWord($conf["search"]["findKeyWord"]);unset($conf["search"]["findKeyWord"]);#如果尋找關鍵字失敗if($searchResult["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$searchResult;#回傳結果return $result;}#if end#如果有找到 PRIMARY KEYif($searchResult["founded"]=="true"){#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$unClassifyString;#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]="PRIMARY KEY ";#爲以哪個符號作爲分割$primaryKeyString=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#如果分割字串失敗if($primaryKeyString["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$primaryKeyString;#回傳結果return $result;}#if end#取得主鍵的欄位名稱$primaryKey=$primaryKeyString["dataArray"][1];#將「,」、「`」、「(」、「)」去掉#函式說明:#處理字串避免網頁出錯#回傳結果::#$result,爲處理好的字串。#必填參數:$conf["stringProcess"]["correctCharacter"]["stringIn"]=$primaryKey;#爲要處理的字串#可省略參數:$conf["stringProcess"]["correctCharacter"]["selectedCharacter"]=array(",","`","(",")");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">",";","=","//","'","$","%","&","|","/*","*\/","#")。#$conf["stringProcess"]["correctCharacter"]["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$getPrimaryKey=stringProcess::correctCharacter($conf["stringProcess"]["correctCharacter"]);unset($conf["stringProcess"]["correctCharacter"]);#如果 處理字串失敗if($getPrimaryKey["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$getPrimaryKey;#回傳結果return $result;}#if end#取得主鍵欄位名稱$result["primaryKey"]=$getPrimaryKey["content"];#後續省略continue;}#if end#尋找是否有 KEY 關鍵字#函式說明:#檢查字串裡面有無指定的關鍵字#回傳結果::#$result["status"],"true"代表執行成功,"false"代表執行失敗。#$result["error"],錯誤訊息#$result["founded"],是否找到關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字。#必填參數:$conf["search"]["findKeyWord"]["keyWord"]=" KEY ";#想要搜尋的關鍵字$conf["search"]["findKeyWord"]["string"]=$unClassifyString;#要被搜尋的字串內容#可省略參數:#$conf["search"]["findKeyWord"]["completeEqual"]="true";#是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。$searchResult=search::findKeyWord($conf["search"]["findKeyWord"]);unset($conf["search"]["findKeyWord"]);#如果尋找關鍵字失敗if($searchResult["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$searchResult;#回傳結果return $result;}#if end#如果有找到 " KEY "if($searchResult["founded"]=="true"){# 用 " KEY " 來分割#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$unClassifyString;#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]=" KEY ";#爲以哪個符號作爲分割$keyString=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#如果分割字串失敗if($keyString["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$keyString;#回傳結果return $result;}#if end#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$keyString["dataArray"][0];#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]="`";#爲以哪個符號作爲分割$keyString=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#debug#var_dump($keyString);#如果分割字串失敗if($keyString["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$keyString;#回傳結果return $result;}#if end#取得索引的欄位名稱$thisKeyColumnName=$keyString["dataArray"][2];#取得要回傳的key欄位名稱$result["key"][]=$thisKeyColumnName;#用index key欄位的名稱來儲存index key的欄位$result["key"][$thisKeyColumnName]=$thisKeyColumnName;#取得用於識別 key 的 Constraint$keyConstraintName=$keyString["dataArray"][0];#將「`」去掉#函式說明:#處理字串避免網頁出錯#回傳結果::#$result,爲處理好的字串。#必填參數:$conf["stringProcess"]["correctCharacter"]["stringIn"]=$keyConstraintName;#爲要處理的字串#可省略參數:$conf["stringProcess"]["correctCharacter"]["selectedCharacter"]=array("`");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">",";","=","//","'","$","%","&","|","/*","*\/","#")。#$conf["stringProcess"]["correctCharacter"]["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$thisKeyConstraintName=stringProcess::correctCharacter($conf["stringProcess"]["correctCharacter"]);unset($conf["stringProcess"]["correctCharacter"]);#如果處理字串失敗if($thisKeyConstraintName["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$thisKeyConstraintName;#回傳結果return $result;}#if end#儲存 key 的名稱$result["keyConstraintName"][]=$thisKeyConstraintName["content"];#將 $result["keyConstraintName"] 用 欄位的名稱去儲存$result["keyConstraintName"][$thisKeyColumnName]=$thisKeyConstraintName["content"];#後續省略continue;}#if end#尋找是否有 CONSTRAINT 關鍵字#函式說明:#檢查字串裡面有無指定的關鍵字#回傳結果::#$result["status"],"true"代表執行成功,"false"代表執行失敗。#$result["error"],錯誤訊息#$result["founded"],是否找到關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字。#必填參數:$conf["search"]["findKeyWord"]["keyWord"]="CONSTRAINT";#想要搜尋的關鍵字$conf["search"]["findKeyWord"]["string"]=$unClassifyString;#要被搜尋的字串內容#可省略參數:#$conf["search"]["findKeyWord"]["completeEqual"]="true";#是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。$searchResult=search::findKeyWord($conf["search"]["findKeyWord"]);unset($conf["search"]["findKeyWord"]);#如果尋找關鍵字失敗if($searchResult["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$searchResult;#回傳結果return $result;}#if end#如果有找到 "CONSTRAINT"if($searchResult["founded"]=="true"){#取得 CONSTRAINT 的名稱#用 " " 來分割字串#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$unClassifyString;#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]=" ";#爲以哪個符號作爲分割$foreignKeyConstraintString=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#如果分割字串失敗if($foreignKeyConstraintString["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$foreignKeyConstraintString;#回傳結果return $result;}#if end#將 $foreignKeyString[0] 的非必要字元踢除#將「,」、「`」、「(」、「)」去掉#函式說明:#處理字串避免網頁出錯#回傳結果::#$result,爲處理好的字串。#必填參數:$conf["stringProcess"]["correctCharacter"]["stringIn"]=$foreignKeyConstraintString["dataArray"][1];#爲要處理的字串#可省略參數:$conf["stringProcess"]["correctCharacter"]["selectedCharacter"]=array("`");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">",";","=","//","'","$","%","&","|","/*","*\/","#")。#$conf["stringProcess"]["correctCharacter"]["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$foreignConstraintName=stringProcess::correctCharacter($conf["stringProcess"]["correctCharacter"]);unset($conf["stringProcess"]["correctCharacter"]);#如果處理 CONSTRAINT 字串失敗if($foreignConstraintName["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$foreignConstraintName;#回傳結果return $result;}#if end#儲存 foreignKey 的 CONSTRAINT 名稱$result["foreignKey"]["constraintName"][]=$foreignConstraintName["content"];#尋找 "FOREIGN KEY"#函式說明:#檢查字串裡面有無指定的關鍵字#回傳結果::#$result["status"],"true"代表執行成功,"false"代表執行失敗。#$result["error"],錯誤訊息#$result["founded"],是否找到關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字。#必填參數:$conf["search"]["findKeyWord"]["keyWord"]="FOREIGN KEY";#想要搜尋的關鍵字$conf["search"]["findKeyWord"]["string"]=$unClassifyString;#要被搜尋的字串內容#可省略參數:#$conf["search"]["findKeyWord"]["completeEqual"]="true";#是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。$searchResult=search::findKeyWord($conf["search"]["findKeyWord"]);unset($conf["search"]["findKeyWord"]);#如果尋找關鍵字失敗if($searchResult["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$searchResult;#回傳結果return $result;}#if end#如果有找到 "FOREIGN KEY"if($searchResult["founded"]=="true"){#用 "FOREIGN KEY " 來分割字串#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$unClassifyString;#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]="FOREIGN KEY ";#爲以哪個符號作爲分割$foreignKeyString=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#如果分割字串失敗if($foreignKeyString["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$foreignKeyString;#回傳結果return $result;}#if end#用 " " 來分割字串#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$foreignKeyString["dataArray"][1];#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]=" ";#爲以哪個符號作爲分割$foreignKeyString=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#如果分割字串失敗if($foreignKeyString["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$foreignKeyString;#回傳結果return $result;}#if end#將 $foreignKeyString[0] 的非必要字元踢除#將「,」、「`」、「(」、「)」去掉#函式說明:#處理字串避免網頁出錯#回傳結果::#$result,爲處理好的字串。#必填參數:$conf["stringProcess"]["correctCharacter"]["stringIn"]=$foreignKeyString["dataArray"][0];#爲要處理的字串#可省略參數:$conf["stringProcess"]["correctCharacter"]["selectedCharacter"]=array(",","`","(",")");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">",";","=","//","'","$","%","&","|","/*","*\/","#")。#$conf["stringProcess"]["correctCharacter"]["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$thisForeignKeyColumnName=stringProcess::correctCharacter($conf["stringProcess"]["correctCharacter"]);unset($conf["stringProcess"]["correctCharacter"]);#如果 處理字串失敗if($thisForeignKeyColumnName["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$thisForeignKeyColumnName;#回傳結果return $result;}#if end#儲存外鍵欄位的名稱$result["foreignKey"]["columnName"][]=$thisForeignKeyColumnName["content"];#用該外鍵欄位的名稱,作為key來存放外鍵欄位的名稱$result["foreignKey"]["columnName"][$thisForeignKeyColumnName["content"]]=$thisForeignKeyColumnName["content"];#用 "REFERENCES " 來分割字串#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$unClassifyString;#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]="REFERENCES ";#爲以哪個符號作爲分割$foreignKeyReferencesString=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#如果分割字串失敗if($foreignKeyReferencesString["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$foreignKeyReferencesString;#回傳結果return $result;}#if end#用 " " 來分割字串#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$foreignKeyReferencesString["dataArray"][1];#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]=" ";#爲以哪個符號作爲分割$foreignKeyReferencesString=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#如果分割字串失敗if($foreignKeyReferencesString["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$foreignKeyReferencesString;#回傳結果return $result;}#if end#將 $foreignKeyString[0] 的非必要字元踢除#將「,」、「`」、「(」、「)」去掉#函式說明:#處理字串避免網頁出錯#回傳結果::#$result,爲處理好的字串。#必填參數:$conf["stringProcess"]["correctCharacter"]["stringIn"]=$foreignKeyReferencesString["dataArray"][1];#爲要處理的字串#可省略參數:$conf["stringProcess"]["correctCharacter"]["selectedCharacter"]=array(",","`","(",")");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">",";","=","//","'","$","%","&","|","/*","*\/","#")。#$conf["stringProcess"]["correctCharacter"]["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$tempReferencesColumn=stringProcess::correctCharacter($conf["stringProcess"]["correctCharacter"]);unset($conf["stringProcess"]["correctCharacter"]);#如果 處理字串失敗if($tempReferencesColumn["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$tempReferencesColumn;#回傳結果return $result;}#if end#取得參照的欄位名稱$result["foreignKey"]["referencesColumn"][]=$tempReferencesColumn["content"];#用欄位名稱來儲存參照的資料表$result["foreignKey"]["referencesColumn"][$thisForeignKeyColumnName["content"]]=$tempReferencesColumn["content"];#將 $foreignKeyString[0] 的非必要字元踢除#將「,」、「`」、「(」、「)」去掉#函式說明:#處理字串避免網頁出錯#回傳結果::#$result,爲處理好的字串。#必填參數:$conf["stringProcess"]["correctCharacter"]["stringIn"]=$foreignKeyReferencesString["dataArray"][0];#爲要處理的字串#可省略參數:$conf["stringProcess"]["correctCharacter"]["selectedCharacter"]=array("`");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">",";","=","//","'","$","%","&","|","/*","*\/","#")。#$conf["stringProcess"]["correctCharacter"]["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$tempReferencesTable=stringProcess::correctCharacter($conf["stringProcess"]["correctCharacter"]);unset($conf["stringProcess"]["correctCharacter"]);#如果處理字串失敗if($tempReferencesTable["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$tempReferencesTable;#回傳結果return $result;}#if end#取得參照的資料表$result["foreignKey"]["referencesTable"][]=$tempReferencesTable["content"];#用欄位名稱來儲存參照的欄位$result["foreignKey"]["referencesTable"][$thisForeignKeyColumnName["content"]]=$tempReferencesTable["content"];#如果有 "ON UPDATE" 存在#函式說明:#檢查字串裡面有無指定的關鍵字#回傳結果::#$result["status"],"true"代表執行成功,"false"代表執行失敗。#$result["error"],錯誤訊息#$result["founded"],是否找到關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字。#必填參數:$conf["search"]["findKeyWord"]["keyWord"]="ON UPDATE";#想要搜尋的關鍵字$conf["search"]["findKeyWord"]["string"]=$unClassifyString;#要被搜尋的字串內容#可省略參數:#$conf["search"]["findKeyWord"]["completeEqual"]="true";#是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。$searchResult=search::findKeyWord($conf["search"]["findKeyWord"]);unset($conf["search"]["findKeyWord"]);#如果尋找關鍵字失敗if($searchResult["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$searchResult;#回傳結果return $result;}#if end#如果有找到 "ON UPDATE"if($searchResult["founded"]=="true"){#用 "ON UPDATE " 來分割字串#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$unClassifyString;#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]="ON UPDATE ";#爲以哪個符號作爲分割$foreignKeyOnUpdateString=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#如果分割字串失敗if($foreignKeyOnUpdateString["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$searchResult;#回傳結果return $result;}#if end#檢查裏面是否含有 " ON DELETE " 字樣#函式說明:#檢查字串裡面有無指定的關鍵字#回傳結果::#$result["status"],"true"代表執行成功,"false"代表執行失敗。#$result["error"],錯誤訊息#$result["founded"],是否找到關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字。#必填參數:$conf["search"]["findKeyWord"]["keyWord"]=" ON DELETE ";#想要搜尋的關鍵字$conf["search"]["findKeyWord"]["string"]=$foreignKeyOnUpdateString["dataArray"][1];#要被搜尋的字串內容#可省略參數:#$conf["search"]["findKeyWord"]["completeEqual"]="true";#是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。$searchResult=search::findKeyWord($conf["search"]["findKeyWord"]);unset($conf["search"]["findKeyWord"]);#如果尋找關鍵字失敗if($searchResult["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$searchResult;#回傳結果return $result;}#if end#如果裏面含有 "ON DELETE " 字樣if($searchResult["founded"]=="true"){#我們只要取得 "ON DELETE " 前面的內容#用"ON UPDATE "來分割#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$foreignKeyOnUpdateString["dataArray"][1];#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]=" ON DELETE ";#爲以哪個符號作爲分割$foreignKeyOnDeleteString=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#var_dump($foreignKeyOnDeleteString);#如果分割字串失敗if($foreignKeyOnDeleteString["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$foreignKeyOnDeleteString;#回傳結果return $result;}#if end$foreignKeyOnUpdateString=$foreignKeyOnUpdateString["dataArray"][0];#將 $foreignKeyOnUpdateString 的非必要字元踢除#將「,」、「`」、「(」、「)」去掉#函式說明:#處理字串避免網頁出錯#回傳結果::#$result,爲處理好的字串。#必填參數:$conf["stringProcess"]["correctCharacter"]["stringIn"]=$foreignKeyOnUpdateString;#爲要處理的字串#可省略參數:$conf["stringProcess"]["correctCharacter"]["selectedCharacter"]=array(",");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">",";","=","//","'","$","%","&","|","/*","*\/","#")。#$conf["stringProcess"]["correctCharacter"]["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$tempOnUpdateAction=stringProcess::correctCharacter($conf["stringProcess"]["correctCharacter"]);unset($conf["stringProcess"]["correctCharacter"]);#如果 處理字串 失敗if($tempOnUpdateAction["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$tempOnUpdateAction;#回傳結果return $result;}#if end#紀錄 ON UPDATE 的動作字串$result["foreignKey"]["onUpdateAction"][]=$tempOnUpdateAction["content"];#用 freign key 的名稱來紀錄外鍵更新的動作$result["foreignKey"]["onUpdateAction"][$thisForeignKeyColumnName]=$tempOnUpdateAction["content"];}#if end#反之 沒有 "ON DELETE " 字樣else{#var_dump($foreignKeyOnUpdateString["dataArray"][1]);#將 $foreignKeyOnUpdateString 的非必要字元踢除#將「,」、「`」、「(」、「)」去掉#函式說明:#處理字串避免網頁出錯#回傳結果::#$result,爲處理好的字串。#必填參數:$conf["stringProcess"]["correctCharacter"]["stringIn"]=$foreignKeyOnUpdateString["dataArray"][1];#爲要處理的字串#可省略參數:$conf["stringProcess"]["correctCharacter"]["selectedCharacter"]=array(",");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">",";","=","//","'","$","%","&","|","/*","*\/","#")。#$conf["stringProcess"]["correctCharacter"]["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$tempOnUpdateAction=stringProcess::correctCharacter($conf["stringProcess"]["correctCharacter"]);unset($conf["stringProcess"]["correctCharacter"]);#如果處理字串失敗if($tempOnUpdateAction["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$tempOnUpdateAction;#回傳結果return $result;}#if end#紀錄外鍵更新的動作$result["foreignKey"]["onUpdateAction"][]=$tempOnUpdateAction["content"];#用 freign key 的名稱來紀錄外鍵更新的動作$result["foreignKey"]["onUpdateAction"][$thisForeignKeyColumnName["content"]]=$tempOnUpdateAction["content"];}#else end}#if end#如果有 "ON DELETE" 存在#函式說明:#檢查字串裡面有無指定的關鍵字#回傳結果::#$result["status"],"true"代表執行成功,"false"代表執行失敗。#$result["error"],錯誤訊息#$result["founded"],是否找到關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字。#必填參數:$conf["search"]["findKeyWord"]["keyWord"]="ON DELETE";#想要搜尋的關鍵字$conf["search"]["findKeyWord"]["string"]=$unClassifyString;#要被搜尋的字串內容#可省略參數:#$conf["search"]["findKeyWord"]["completeEqual"]="true";#是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。$searchResult=search::findKeyWord($conf["search"]["findKeyWord"]);unset($conf["search"]["findKeyWord"]);#如果尋找關鍵字失敗if($searchResult["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$searchResult;#回傳結果return $result;}#if end#如果有找到 "ON DELETE"if($searchResult["founded"]=="true"){#用 "ON DELETE " 來分割字串#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$unClassifyString;#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]="ON DELETE ";#爲以哪個符號作爲分割$foreignKeyOnDeleteString=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#如果分割字串失敗if($foreignKeyOnDeleteString["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$foreignKeyOnDeleteString;#回傳結果return $result;}#if end#檢查裏面是否含有 " ON UPDATE " 字樣#函式說明:#檢查字串裡面有無指定的關鍵字#回傳結果::#$result["status"],"true"代表執行成功,"false"代表執行失敗。#$result["error"],錯誤訊息#$result["founded"],是否找到關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字。#必填參數:$conf["search"]["findKeyWord"]["keyWord"]="ON UPDATE ";#想要搜尋的關鍵字$conf["search"]["findKeyWord"]["string"]=$foreignKeyOnDeleteString["dataArray"][1];#要被搜尋的字串內容#可省略參數:#$conf["search"]["findKeyWord"]["completeEqual"]="true";#是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。$searchResult=search::findKeyWord($conf["search"]["findKeyWord"]);unset($conf["search"]["findKeyWord"]);#如果分割字串失敗if($searchResult["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$searchResult;#回傳結果return $result;}#if end#如果裏面含有 "ON UPDATE " 字樣if($searchResult["founded"]=="true"){#我們只要取得 "ON UPDATE " 前面的內容#用"ON UPDATE "來分割#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$foreignKeyOnDeleteString["dataArray"][1];#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]=" ON UPDATE ";#爲以哪個符號作爲分割$foreignKeyOnDeleteString=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#如果分割字串失敗if($searchResult["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$searchResult;#回傳結果return $result;}#if end$foreignKeyOnDeleteString=$foreignKeyOnDeleteString["dataArray"][0];#將 $foreignKeyString[0] 的非必要字元踢除#將「,」、「`」、「(」、「)」去掉#函式說明:#處理字串避免網頁出錯#回傳結果::#$result,爲處理好的字串。#必填參數:$conf["stringProcess"]["correctCharacter"]["stringIn"]=$foreignKeyOnDeleteString;#爲要處理的字串#可省略參數:$conf["stringProcess"]["correctCharacter"]["selectedCharacter"]=array(",");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">",";","=","//","'","$","%","&","|","/*","*\/","#")。#$conf["stringProcess"]["correctCharacter"]["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$tempOneleteAction=stringProcess::correctCharacter($conf["stringProcess"]["correctCharacter"]);unset($conf["stringProcess"]["correctCharacter"]);#如果處理字串失敗if($tempOneleteAction["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$tempOneleteAction;#回傳結果return $result;}#if end#儲存外鍵移除後的動作$result["foreignKey"]["onDeleteAction"][]=$tempOneleteAction["content"];#用 freign key 的名稱來紀錄外鍵移除後的動作$result["foreignKey"]["onDeleteAction"][$thisForeignKeyColumnName["content"]]=$tempOneleteAction["content"];}#if end#反之裏面沒有 "ON UPDATE " 字樣else{#將 $foreignKeyString[0] 的非必要字元踢除#將「,」、「`」、「(」、「)」去掉#函式說明:#處理字串避免網頁出錯#回傳結果::#$result,爲處理好的字串。#必填參數:$conf["stringProcess"]["correctCharacter"]["stringIn"]=$foreignKeyOnDeleteString["dataArray"][1];#爲要處理的字串#可省略參數:$conf["stringProcess"]["correctCharacter"]["selectedCharacter"]=array(",");#爲被選擇要處理的字串/字元,須爲陣列值。#若不設定則預設爲要將這些字串作替換("<",">",";","=","//","'","$","%","&","|","/*","*\/","#")。#$conf["stringProcess"]["correctCharacter"]["changeTo"]=array();#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。$tempOneleteAction=stringProcess::correctCharacter($conf["stringProcess"]["correctCharacter"]);unset($conf["stringProcess"]["correctCharacter"]);#如果處理字串失敗if($tempOneleteAction["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$tempOneleteAction;#回傳結果return $result;}#if end#取得 外鍵移除後的動作$result["foreignKey"]["OnDeleteAction"][]=$tempOneleteAction["content"];#用 freign key 的名稱來紀錄外鍵移除後的動作$result["foreignKey"]["onDeleteAction"][$thisForeignKeyColumnName]=$tempOneleteAction["content"];}#else end}#if end}#if end}#if end}#foreach end#如果儲存索引鍵資訊的變數存在if(isset($result["key"])){#如果索引鍵的數量大於0if(count($result["key"])>0){#設置 $result["key"]["exist"] 為 "true";$result["key"]["exist"]="true";}#if end#反之沒有索引鍵else{#設置 $result["key"]["exist"] 為 "false";$result["key"]["exist"]="false";}#else end}#if end#如果 $result["foreignKey"]["constraintName"] 存在if(isset($result["foreignKey"]["constraintName"])){#如果 $result["foreignKey"]["constraintName"] 數量大於 0if(count($result["foreignKey"]["constraintName"])>0){#針對每個 $result["foreignKey"]["constraintName"][$k]for($i=0;$i<count($result["foreignKey"]["columnName"])/2;$i++){#指派 $result["foreignKey"]["constraintName"][$k] 的內容同時指派給 $result["foreignKey"]["constraintName"][$result["foreignKey"]["columnName"][$k]]$result["foreignKey"]["constraintName"][$result["foreignKey"]["columnName"][$i]]=$result["foreignKey"]["constraintName"][$i];}#if end#將 $result["foreignKey"]["exist"] 設為 "true"$result["foreignKey"]["exist"]="true";}#if end#反之 $result["foreignKey"]["exist"] 數量等於 0else{#將 $result["foreignKey"]["exist"] 設為 "fasle"$result["foreignKey"]["exist"]="false";}#else end}#if end#反之 $result["foreignKey"]["constraintName"] 不存在else{#將 $result["foreignKey"]["exist"] 設為 "fasle"$result["foreignKey"]["exist"]="false";}#else end#執行到這邊代表執行成功#設置成功訊息$result["status"]="true";#回傳結果return $result;}#function getTableColumnDetailInfo end/*#函式說明:#移除資料表單1欄位的外鍵#回傳結果:#$result["status"],"true",代表執行成功;"false"代表執行失敗#$result["function"],當前執行的函數名稱.#$result["error"],錯誤訊息陣列#$result["sql"],執行的sql字串.#必填參數:#$conf["dbAddress"],字串,爲mysql-Server的位置$conf["dbAddress"]=$dbAddress;#$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號$conf["dbAccount"]=$dbAccount;#$conf["selectedDataBaseName"],字串,爲目標資料表所屬的資料庫.$conf["selectedDataBaseName"]="";#$conf["selectedDataTableName"],字串,爲目標資料表所屬的資料庫.$conf["selectedDataTableName"]="";#$conf["erasedForeignKeyColumnConstraintName"],字串,要移除外鍵欄位的CONSTRAINT名稱.$conf["erasedForeignKeyColumnConstraintName"]="";#可省略參數:#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼.#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,預設為3306.#$conf["dbPort"]="3306";#參考資料:#無.#備註:#無.*/public static function eraseForeignKey($conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#函式說明:#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。#回傳結果:#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#必填參數:$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("dbAddress","dbAccount","selectedDataBaseName","selectedDataTableName","erasedForeignKeyColumnConstraintName");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");#可省略參數:#$conf["variableType"]=array();#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);unset($conf["variableCheck"]["isexistMuti"]);#如果檢查不通過if($checkResult["passed"]=="false"){#設置執行失敗的訊息$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#移除foreignKey的語法$sql="ALTER TABLE ".$conf["selectedDataBaseName"].".".$conf["selectedDataTableName"]." DROP FOREIGN KEY ".$conf["erasedForeignKeyColumnConstraintName"];#函式說明:#執行mysql查詢的指令#回傳結果::#$result["status"],"true"為執行成功;"false"為執行失敗。#$result["error"],錯誤訊息的陣列#查詢號的解果,需要解析。#必填參數:$conf["db"]["execMysqlQuery"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["execMysqlQuery"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["execMysqlQuery"]["dbSql"]=$sql;#要執行sql語法#可省略參數:#如果有設定密碼if(isset($conf["dbPassword"])){$conf["db"]["execMysqlQuery"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#設定 $conf["dbPort"]$conf["db"]["execMysqlQuery"]["dbPort"]=$conf["dbPort"];}#if end$queryResult=db::execMysqlQuery($conf["db"]["execMysqlQuery"]);unset($conf["db"]["execMysqlQuery"]);#取得執行的sql語法$result["sql"]=$queryResult["queryString"];#如果執行sql語法錯誤if($queryResult["status"]=="false"){#設置執行失敗的識別$result["status"]="false";#設置執行錯誤資訊$result["error"]=$queryResult;#回傳結果return $result;}#if end#執行到這邊代表執行無誤#設置執行成功的識別$result["status"]="true";#回傳結果return $result;}#function eraseForeignKey end/*#函式說明:#移除資料表單1欄位的索引鍵#回傳結果:#$result["status"],"true",代表執行成功;"false"代表執行失敗#$result["error"],錯誤訊息陣列#$result["sql"],執行的sql字串.#必填參數:$conf["dbAddress"],字串,爲mysql-Server的位置.$conf["dbAddress"]=$dbAddress;$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號.$conf["dbAccount"]=$dbAccount;$conf["selectedDataBaseName"],字串,爲目標資料表所屬的資料庫.$conf["selectedDataBaseName"]="";$conf["selectedDataTableName"],字串,爲目標資料表所屬的資料庫.$conf["selectedDataTableName"]="";$conf["erasedIndexKeyColumnConstraintName"],字串,要移除外鍵欄位的CONSTRAINT名稱.$conf["erasedIndexKeyColumnConstraintName"]="";#可省略參數:#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼.#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,預設為3306.#$conf["dbPort"]="3306";#參考資料:#無.#備註:#無.*/public static function eraseIndexKey($conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#函式說明:#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。#回傳結果:#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#必填參數:$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("dbAddress","dbAccount","selectedDataBaseName","selectedDataTableName","erasedIndexKeyColumnConstraintName");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");#可省略參數:#$conf["variableType"]=array();#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);unset($conf["variableCheck"]["isexistMuti"]);#檢查有誤if($checkResult["status"]=="false"){#設置執行失敗的訊息$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置執行失敗的訊息$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#移除Key的語法$sql="ALTER TABLE ".$conf["selectedDataBaseName"].".".$conf["selectedDataTableName"]." DROP INDEX `".$conf["erasedIndexKeyColumnConstraintName"]."`";#函式說明:#執行mysql查詢的指令#回傳結果::#$result["status"],"true"為執行成功;"false"為執行失敗。#$result["error"],錯誤訊息的陣列#查詢號的解果,需要解析。#必填參數:$conf["db"]["execMysqlQuery"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["execMysqlQuery"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["execMysqlQuery"]["dbSql"]=$sql;#要執行sql語法#可省略參數:#如果有設定密碼if(isset($conf["dbPassword"])){$conf["db"]["execMysqlQuery"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#設定 $conf["dbPort"]$conf["db"]["execMysqlQuery"]["dbPort"]=$conf["dbPort"];}#if end$queryResult=db::execMysqlQuery($conf["db"]["execMysqlQuery"]);unset($conf["db"]["execMysqlQuery"]);#取得執行的sql語法$result["sql"]=$queryResult["queryString"];#如果執行sql語法錯誤if($queryResult["status"]=="false"){#設置執行失敗的識別$result["status"]="false";#設置執行錯誤資訊$result["error"]=$queryResult;#回傳結果return $result;}#if end#執行到這邊代表執行無誤#設置執行失敗的識別$result["status"]="true";#回傳結果return $result;}#function eraseIndexKey end/*#函式說明:#移除資料表的欄位#回傳結果:#$result["status"],若成功則爲"true",失敗則爲,"false"#$result["error"],錯誤訊息.#$result["function"],當前執行的函數名稱.#必填參數:#$conf["dbAddress"],字串,爲mysql-Server的位置.$conf["dbAddress"]=$dbAddress;#$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號.$conf["dbAccount"]=$dbAccount;#$conf["selectedDataBaseName"],字串,爲目標資料表所屬的資料庫.$conf["selectedDataBaseName"]="";#$conf["selectedDataTableName"],字串,爲目標資料表所屬的資料庫.$conf["selectedDataTableName"]="";#$conf["removedColumnName"],字串,要移除的欄位名稱.$conf["removedColumnName"]="";#可省略參數:#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼.#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,預設為3306.#$conf["dbPort"]="3306";#參考資料:#無.#備註:#無.*/public static function dropColumn($conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#函式說明:#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。#回傳結果:#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#必填參數:$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("dbAddress","dbAccount","selectedDataBaseName","selectedDataTableName","removedColumnName");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");#可省略參數:$conf["variableType"]=array("string","string","string","string","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);unset($conf["variableCheck"]["isexistMuti"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置執行失敗的訊息$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置執行失敗的訊息$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#函式說明:#取得資料表所有欄位的詳細資訊#回傳的內容:#$result["status"],執行結果,"true"代表執行成功;"false"代表執行失敗#$result["error"],錯誤訊息陣列#$result["sql"],執行的sql語法#$result["oriInput"],原始的資料表欄位資訊#$result["everyLine"],逐行的欄位資訊#$result["tableName"],當前查詢的資料表名稱#$result["engine"],資料表使用的儲存引擎#$result["charset"],資料表預設的編碼#$result["columnName"][$i],各欄位的名稱陣列,$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnVarTypeAndLengthLimit"][$i],各欄位儲存的變數形態與長度限制,$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnNotNull"][$i],各欄位是否可以不爲null,"true"爲可以不爲null;"false"爲可以爲"null",$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnAutoIncrement"][$i],各欄位是否會自動加1,"true"爲會;"false"爲不會,$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnDefault"][$i],各欄位的預設內容,若無則爲"沒有指定",$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnOnUpdateAction"][$i],當資料有修改時,該欄位的內容要怎麼因應,$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnCharacterSet"][$i],各欄位使用的CharacterSet,$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnCollate"][$i],各欄位使用的Collate,$i爲0開始的數字,也可以使用欄位的名稱。#$result["key"]["exist"],該資料表是否有索引鍵,"true"代表有;"false"代表沒有。#$result["key"][$j],該資料表的索引鍵陣列,$j爲0開始的數字,也可以使用欄位的名稱。#$result["keyConstraintName"][$j],該資料表用於識別索引鍵的CONSTRAINT名稱陣列,$j爲0開始的數字,也可以使用欄位的名稱。#$result["primaryKey"],該資料表的主鍵#$result["foreignKey"]["exist"],該資料表是否有foreign key,"true"代表有;"fasle"代表沒有。#$result["foreignKey"]["constraintName"][$k],用來識別外鍵的CONSTRAINT名稱陣列,$k爲0開始的數字,也可以使用欄位的名稱。#$result["foreignKey"]["columnName"][$k],外鍵的名稱陣列,$k爲0開始的數字,也可以使用欄位的名稱。#$result["foreignKey"]["referencesTable"][$k],外鍵參照的欄位,$k爲0開始的數字#$result["foreignKey"]["referencesColumn"][$k],外鍵參照的欄位屬於哪個資料表,$k爲0開始的數字#$result["columnOnUpdateAction"][$i],當參照的欄位資料更新時,會怎麼同步,$i爲0開始的數字,"沒有指定"為沒有設定#$result["columnOnDeleteAction"][$i],當參照的欄位資料移除時,會怎麼同步,$i爲0開始的數字,"沒有指定"為沒有設定#必填參數:$conf["db"]["getTableColumnDetailInfo"]["dbAddress"]=$conf["dbAddress"];#資料庫的網路位置$conf["db"]["getTableColumnDetailInfo"]["dbAccount"]=$conf["dbAccount"];#連線到資料庫要用的帳號$conf["db"]["getTableColumnDetailInfo"]["selectedDataBase"]=$conf["selectedDataBaseName"];#連線到資料庫要選擇的資料庫$conf["db"]["getTableColumnDetailInfo"]["selectedDataTable"]=$conf["selectedDataTableName"];#連線到資料庫要檢視的資料表#可省略參數:#如果 $conf["dbPassword"] 有設置if(isset($conf["dbPassword"])){$conf["db"]["getTableColumnDetailInfo"]["dbPassword"]=$conf["dbPassword"];#連線到資料庫要用的密碼}#if end#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#設定 $conf["dbPort"]$conf["db"]["getTableColumnDetailInfo"]["dbPort"]=$conf["dbPort"];}#if end$tableDetail=db::getTableColumnDetailInfo($conf["db"]["getTableColumnDetailInfo"]);unset($conf["db"]["getTableColumnDetailInfo"]);#如果取得資料表結構詳細資料失敗if($tableDetail["status"]=="false"){#設置執行失敗的訊息$result["status"]="false";#設置錯誤訊息$result["error"]=$tableDetail;#回傳結果return $result;}#if end#var_dump($tableDetail["foreignKey"]);#判斷該欄位是否爲 foreign keyif(isset($tableDetail["foreignKey"]["columnName"][$conf["removedColumnName"]])){#代表該欄位等於 foreign key#先移除foreign key...#函式說明:#移除資料表單1欄位的外鍵#回傳結果:#$result["status"],"true",代表執行成功;"false"代表執行失敗#$result["error"],錯誤訊息陣列#必填參數:$conf["db"]["eraseForeignKey"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["eraseForeignKey"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["eraseForeignKey"]["selectedDataBaseName"]=$conf["selectedDataBaseName"];#爲目標資料表所屬的資料庫$conf["db"]["eraseForeignKey"]["selectedDataTableName"]=$conf["selectedDataTableName"];#爲目標資料表所屬的資料庫$conf["db"]["eraseForeignKey"]["erasedForeignKeyColumnConstraintName"]=$tableDetail["foreignKey"]["constraintName"][$conf["removedColumnName"]];#要移除外鍵欄位的CONSTRAINT名稱#可省略參數:#如果 $conf["dbPassword"] 有設置if(isset($conf["dbPassword"])){$conf["db"]["eraseForeignKey"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#設定 $conf["dbPort"]$conf["db"]["eraseForeignKey"]["dbPort"]=$conf["dbPort"];}#if end$eraseForeignKeyResult=db::eraseForeignKey($conf["db"]["eraseForeignKey"]);unset($conf["db"]["eraseForeignKey"]);#var_dump($eraseForeignKeyResult);#如果執行失敗if($eraseForeignKeyResult["status"]=="false"){#var_dump($eraseForeignKeyResult);#設置錯誤識別$result["status"]="fasle";#設置錯誤提示$result["error"]=$eraseForeignKeyResult;#回傳結果return $result;}#if end}#if end#如果要移除欄位是indexif(isset($tableDetail["key"][$conf["removedColumnName"]])){#移除索引鍵#函式說明:#移除資料表單1欄位的索引鍵#回傳結果:#$result["status"],"true",代表執行成功;"false"代表執行失敗#$result["error"],錯誤訊息陣列#必填參數:$conf["db"]["eraseIndexKey"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["eraseIndexKey"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["eraseIndexKey"]["selectedDataBaseName"]=$conf["selectedDataBaseName"];#爲目標資料表所屬的資料庫$conf["db"]["eraseIndexKey"]["selectedDataTableName"]=$conf["selectedDataTableName"];#爲目標資料表所屬的資料庫$conf["db"]["eraseIndexKey"]["erasedIndexKeyColumnConstraintName"]=$tableDetail["keyConstraintName"][$conf["removedColumnName"]];#要移除索引鍵欄位的CONSTRAINT名稱#可省略參數:#如果 $conf["dbPassword"] 有設置if(isset($conf["dbPassword"])){$conf["db"]["eraseIndexKey"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#設定 $conf["dbPort"]$conf["db"]["eraseIndexKey"]["dbPort"]=$conf["dbPort"];}#if end$eraseIndexKeyResult=db::eraseIndexKey($conf["db"]["eraseIndexKey"]);unset($conf["db"]["eraseIndexKey"]);#如果執行失敗if($eraseIndexKeyResult["status"]=="false"){#var_dump($eraseIndexKeyResult);#設置錯誤識別$result["status"]="fasle";#設置錯誤提示$result["error"]=$eraseIndexKeyResult;#回傳結果return $result;}#if end}#if end#組合sql語言$sql="alter table ".$conf["selectedDataBaseName"].".".$conf["selectedDataTableName"]." drop `".$conf["removedColumnName"]."`;";#函式說明:#執行mysql指令#回傳結果::#$result["status"],"true"為執行成功;"false"為執行失敗。#$result["error"],錯誤訊息的陣列#$result["queryResource"],mysql查詢後的resource資源,用於給mysql解析的資源變數。#查詢號的解果,需要解析。#必填參數:$conf["db"]["execMysqlQuery"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["execMysqlQuery"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["execMysqlQuery"]["dbSql"]=$sql;#要執行sql語法#可省略參數:#如果有設定連線密碼if(isset($conf["dbPassword"])){#就套用密碼$conf["db"]["execMysqlQuery"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#設定 $conf["dbPort"]$conf["db"]["execMysqlQuery"]["dbPort"]=$conf["dbPort"];}#if end$queryResult=db::execMysqlQuery($conf["db"]["execMysqlQuery"]);unset($conf["db"]["execMysqlQuery"]);#如果執行失敗if($queryResult["status"]=="false"){#設置執行失敗$result["status"]="false";#取得錯誤訊息$result["error"]=$queryResult;#回傳結果return $result;}#if end#設置執行成功$result["status"]="true";#回傳結果return $result;}#function dropColumn end/*#函式說明:#清空資料表儲存的資料#回傳結果::#$result["status"],執行成功與否,"true"代表執行成功;"fasle"代表執行失敗#$result["error"],錯誤訊息#$result["function"],當前執行的涵式.#必填參數:$conf["dbAddress"]="字串,爲mysql-Server的位置$conf["dbAddress"]=$dbAddress;$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號$conf["dbAccount"]=$dbAccount;$conf["dbName"]=$dbName;#爲目標資料表所屬的資料庫$conf["dtName"]="";#爲要移除的資料表名稱#可省略參數:#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼.#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,預設為3306.#$conf["dbPort"]="3306";#參考資料:#https://dev.mysql.com/doc/refman/5.0/en/truncate-table.html#備註:#無.*/public static function emptyTable($conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#函式說明:#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。#回傳結果:#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#必填參數:$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("dbAddress","dbAccount","dbName","dtName");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");#可省略參數:#$conf["variableType"]=array();#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);unset($conf["variableCheck"]);#如果檢查不通過if($checkResult["status"]=="false"){#設置錯誤識別$result["status"]="fasle";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置錯誤識別$result["status"]="fasle";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#設定要執行的sql語法$sql="TRUNCATE TABLE ".$conf["dbName"].".".$conf["dtName"].";";#函式說明:#執行mysql指令#回傳結果::#$result["status"],"true"為執行成功;"false"為執行失敗。#$result["error"],錯誤訊息的陣列#$result["queryResource"],mysql查詢後的resource資源,用於給mysql解析的資源變數。#$result["queryString"],mysql查詢的語言#查詢號的解果,需要解析。#必填參數:$conf["db.execMysqlQuery"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db.execMysqlQuery"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db.execMysqlQuery"]["dbSql"]=$sql;#要執行sql語法#可省略參數:#如果 $conf["dbPassword"] 有設置if(isset($conf["dbPassword"])){$conf["db.execMysqlQuery"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#設定 $conf["dbPort"]$conf["db.execMysqlQuery"]["dbPort"]=$conf["dbPort"];}#if end$queryResult=db::execMysqlQuery($conf["db.execMysqlQuery"]);unset($conf["db.execMysqlQuery"]);#如果 $queryResult["status"] 為 "false"if($queryResult["status"]=="false"){#函式說明:#透過一筆筆將資料表刪除後,重設識別欄位的自動增量欄位起始值為1#回傳結果:#$result["status"],執行是否正常,"true"代表執行正常,"false"代表執行失敗.#$result["error"],錯誤訊息.#$result["function"],當前執行的函數名稱.#$result["sql"],執行的sql語法陣列.#必填參數:#$conf["db.eraseDataInTableThenResetAutoIncrement"]["dbAddress"],字串,連線到資料庫的位置.$conf["db.eraseDataInTableThenResetAutoIncrement"]["dbAddress"]=$conf["dbAddress"];#$conf["db.eraseDataInTableThenResetAutoIncrement"]["dbAccount"],字串,連線到資料庫的帳號.$conf["db.eraseDataInTableThenResetAutoIncrement"]["dbAccount"]=$conf["dbAccount"];#$conf["db.eraseDataInTableThenResetAutoIncrement"]["dbName"],字串,要連線到哪個資料庫.$conf["db.eraseDataInTableThenResetAutoIncrement"]["dbName"]=$conf["dbName"];#$conf["db.eraseDataInTableThenResetAutoIncrement"]["dtName"],字串,要重設重設識別欄位的自動增量為0的資料表名稱.$conf["db.eraseDataInTableThenResetAutoIncrement"]["dtName"]=$conf["dtName"];#可省略參數:#如果 $conf["dbPassword"] 有設置if(isset($conf["dbPassword"])){#$conf["db.eraseDataInTableThenResetAutoIncrement"]["dbPassword"],字串,連線到資料庫的密碼.$conf["db.eraseDataInTableThenResetAutoIncrement"]["dbPassword"]=$conf["dbPassword"];}#if end#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#設定 $conf["dbPort"]$conf["db.eraseDataInTableThenResetAutoIncrement"]["dbPort"]=$conf["dbPort"];}#if end#參考資料:#http://dev.mysql.com/doc/refman/5.0/en/alter-table.html#參考語法:#ALTER TABLE dbName.dtName AUTO_INCREMENT = 1;$eraseDataInTableThenResetAutoIncrementResult=db::eraseDataInTableThenResetAutoIncrement($conf["db.eraseDataInTableThenResetAutoIncrement"]);unset($conf["db.eraseDataInTableThenResetAutoIncrement"]);#如果 透過一筆筆將資料表刪除後,重設識別欄位的自動增量欄位起始值為1 失敗if($eraseDataInTableThenResetAutoIncrementResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$eraseDataInTableThenResetAutoIncrementResult;#回傳結果return $result;}#if end}#if end#值行到這邊代表執行成功$result["status"]="true";#回傳結果return $result;}#function emptyTable end/*#函式說明:#更改資料庫的名稱#回傳結果::#$result["status"],"true"代表執行成功#$result["function"],當前執行的函數名稱.#$result["error"],錯誤訊息陣列.#必填參數:#$conf["editedDatabaseName"],爲要更改的資料庫名稱.$conf["editedDatabaseName"]=$editedDbName;#$conf["newDatabaseName"],新的資料庫名稱$conf["newDatabaseName"]="";#$conf["dbAccount"],爲用於連入資料庫server時要使用的帳號$conf["dbAccount"]=$dbAccount;#$conf["dbAddress"],爲資料庫server的位置$conf["dbAddress"]=$dbAddress;#$conf["fileArgu"],字串,__FILE__的內容.$conf["fileArgu"]=__FILE__;#可省略參數:#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼.#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,預設為3306.#$conf["dbPort"]="3306";#參考資料:#http://stackoverflow.com/questions/1708651/how-can-i-change-case-of-database-name-in-mysql#備註:#無.*/public static function editDatabaseName($conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#函式說明:#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。#回傳結果:#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#必填參數:$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("fileArgu","editedDatabaseName","newDatabaseName","dbAccount","dbAddress");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");#可省略參數:#$conf["variableType"]=array();#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);unset($conf["variableCheck"]["isexistMuti"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳錯誤訊息return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳錯誤訊息return $result;}#if end#檢查要修改名稱的資料庫是否爲系統資料庫#函式說明:#檢查一個數值是否與陣列裏面的元素相同#回傳結果::#$result["status"],"true"表示執行正確,"false"表示執行錯誤.#$result["founded"],"true"表示有找到相同的,"false"表示沒有找到相同的.#$result["error"],錯誤訊息#$result["function"],當前執行的函數名稱#$result["equalVarName"],相等的變數名稱或key.#$result["equalVarValue"],相等的變數數值內容.#必填參數:$conf["search"]["getEqualVar"]["conditionElement"]=$conf["editedDatabaseName"];#條件元素,要等於的元素內容。$conf["search"]["getEqualVar"]["compareElements"]=array("information_schema","mysql","performance_schema");#要比對的陣列變數內容。$searchResult=search::getEqualVar($conf["search"]["getEqualVar"]);unset($conf["search"]["getEqualVar"]);#如果檢查失敗if($searchResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$searchResult;#回傳結果return $result;}#if end#如果要移除的資料庫爲系統資料庫if($searchResult["founded"]=="true"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"][]="您不能更改系統資料庫";#回傳結果return $result;}#if end#如果 $conf["dbPassword"] 不存在if(!isset($conf["dbPassword"])){#設爲空值$conf["dbPassword"]="";}#if end#反之有設定else{#設定連線用的密碼$formatedPassword="--password=".$conf["dbPassword"];}#else end#檢查新名字的資料庫是否存在#函式說明:#檢查該資料庫是否存在,結果會回傳一個陣列。#回傳結果:#$result["status"],執行正常則回傳"true",執行失敗則回傳"false".#$result["error"],錯誤訊息#$result["exist"],有為"true",無為"false".#必填的參數$conf["db"]["checkDataBaseExists"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["checkDataBaseExists"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["checkDataBaseExists"]["checkDataBaseName"]=$conf["newDatabaseName"];#爲要檢查是否存在的資料庫名稱#可省略參數#如果 $conf["dbPassword"] 存在if(isset($conf["dbPassword"])){#設置密碼$conf["db"]["checkDataBaseExists"]["dbPassword"]=$conf["dbPassword"];}#if end#如果 $conf["dbPort"] 存在if(isset($conf["dbPort"])){#設置密碼$conf["db"]["checkDataBaseExists"]["dbPort"]=$conf["dbPort"];}#if end$checkResult=db::checkDataBaseExists($conf["db"]["checkDataBaseExists"]);unset($conf["db"]["checkDataBaseExists"]);#如果 $checkResult["status"] 等於 "false"if($checkResult["status"]==="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果跟現有的資料庫名稱一樣if($checkResult["exist"]==="true"){#設置錯誤訊息$result["error"]=$checkResult;#設置錯誤識別$result["status"]="false";#回傳結果return $result;}#if end#如果沒有跟現有的資料庫名稱一樣if($checkResult["exist"]==="false"){#建立新的資料庫#函式說明:#建立資料庫,會回傳一個陣列。#回傳結果:#$result["status"],若成功則爲"true",失敗則爲"false".#$result["error"],錯誤訊息#必填參數:$conf["db"]["createDatabase"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["createDatabase"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["createDatabase"]["newDatabaseName"]=$conf["newDatabaseName"];#爲要新增的資料庫名稱#可省略參數:#如果 $conf["dbPassword"] 存在if(isset($conf["dbPassword"])){#設置密碼$conf["db"]["createDatabase"]["dbPassword"]=$conf["dbPassword"];}#if end#如果 $conf["dbPort"] 存在if(isset($conf["dbPort"])){#設置密碼$conf["db"]["createDatabase"]["dbPort"]=$conf["dbPort"];}#if end$createNewDbResult=db::createDatabase($conf["db"]["createDatabase"]);unset($conf["db"]["createDatabase"]);#如果新資料庫建立失敗if($createNewDbResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$createNewDbResult;#回傳結果return $result;}#if end#將舊的資料庫內容完整複製到新的資料庫#函式說明:#呼叫shell執行系統命令,並取得回傳的內容.#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列.#$result["function"],當前執行的函數名稱.#$result["argu"],使用的參數.#$result["cmd"],執行的指令內容.#$result["fullCmd"],如果參數 $conf["inBackGround"] 為 "true" 則會回傳該值.#$result["output"],爲執行完二元碼後的輸出陣列,若 $conf["inBackGround"] 為 "true",則為當下的輸出.#$result["tmpFileOutput"],儲存輸出的暫存檔案名稱,若 $conf["inBackGround"] 為 "true" 則會回傳該值.#$result["running"],是否還在執行.#$result["pid"],pid.#$result["statusCode"],執行結束後的代碼.#$result["escape"],陣列,儲存出新排序過且已經escape過的指令(key為"cmd")與參數(key為"argu").#必填參數:#$conf["command"],字串,要執行的指令.$conf["external::callShell"]["command"]="mysqldump";#$conf["fileArgu"],字串,變數__FILE__的內容.$conf["external::callShell"]["fileArgu"]=$conf["fileArgu"];#可省略參數:#$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.$conf["external::callShell"]["argu"]=array("-u".$conf["dbAccount"],$formatedPassword,$conf["editedDatabaseName"],"|","mysql","-u".$conf["dbAccount"],$formatedPassword,$conf["newDatabaseName"]);#$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").#$conf["arguIsAddr"]=array();#$conf["pre"],陣列,要在本指令前執行的每個指令與參數.#$conf["pre"][$i]["cmd"],字串,要在本指令前執行的第$i+1個指令.#$conf["pre"][$i]["param"],陣列字串,要在本指令前執行的第$i+1個指令的參數.#$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".#$conf["enablePrintDescription"]="true";#$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容加上使用的$conf["argu"]參數.#$conf["printDescription"]="";#$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"false".如果參數為"< 、<< 、> 、>> 、| 、2>&1"之一則不會過濾.#$conf["escapeshellarg"]="false";#$conf["thereIsShellVar"],陣列字串,指令搭配的參數"argu",若含有「\'」,則取代為「"」.每個argu參數都要有對應的元素."true"代表要置換.#$conf["thereIsShellVar"]=array();#$conf["username"],字串,要用什麼使用者來執行,預設為執行php的使用者,該參數不適用於apache環境.#$conf["username"]="";#$conf["password"],字串,root的使用者密碼,預設不使用密碼,該參數不適用於apache環境.#$conf["password"]="";#$conf["useScript"],字串,是否要啟用Linux的script指令來記錄輸出,"true"代表要,Fedora的selinux會擋住該操作;"false"代表不要,預設為"false".#$conf["useScript"]="";#$conf["logFilePath"],字串,當 $conf["useScript"] 為 "true" 時,輸出的內容要暫存到哪裡,預設為 "/tmp/.qbpwcf_tmp/external/callShell/".#$conf["logFilePath"]=".qbpwcf_tmp/external/callShell/";#$conf["inBackGround"],字串,是否要在背景執行,且不會等待程式執行結束再執行下一個指令,"true"代表是,"false"代表不要,預設為"false",如果$conf["command"]有用「;」區隔的多個指令將會出錯.#$conf["inBackGround"]="";#$conf["getErr"],字串,"true"代表將錯誤輸出變成標準輸出,反之"false"為不變動.#$conf["getErr"]="false";#$conf["doNotRun"],字串,"true"代表不執行指令,預設為"false"會執行指令.#$conf["doNotRun"]="false";#參考資料:#exec=>http://php.net/manual/en/function.exec.php#escapeshellcmd=>http://php.net/manual/en/function.escapeshellcmd.php#escapeshellarg=>http://php.net/manual/en/function.escapeshellarg.php#備註:#不是所有指令都能用apache的身份執行,目前已知java,javac指令無法執行,使用root身份可能會被selinux阻擋.#若使用的 command、argu 參數,含有 ~ 則會被視為字串,若有需要其於 shell 中代表的家目錄位置,可用 fileAccess::tildeToPath 來進行轉換.$callShell=external::callShell($conf["external::callShell"]);unset($conf["external::callShell"]);#若執行shell失敗if($callShell["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$callShell;#回傳結果return $result;}#if end#將舊的資料庫丟棄#函式說明:#移除資料庫,會回傳一個陣列。#回傳結果:#$result["status"],若成功則爲0,失敗則爲1。#$result["error"],錯誤訊息#必填參數:$conf["db"]["dropDatabase"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["dropDatabase"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["dropDatabase"]["dropedDatabaseName"]=$conf["editedDatabaseName"];#爲要移除的資料庫名稱#可省略參數:#如果 $conf["dbPassword"] 存在if(isset($conf["dbPassword"])){#設置密碼$conf["db"]["dropDatabase"]["dbPassword"]=$conf["dbPassword"];}#if end#如果 $conf["dbPort"] 存在if(isset($conf["dbPort"])){#設置密碼$conf["db"]["dropDatabase"]["dbPort"]=$conf["dbPort"];}#if end$dropDbResult=db::dropDatabase($conf["db"]["dropDatabase"]);unset($conf["db"]["dropDatabase"]);#如果舊資料庫丟棄失敗if($dropDbResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"][]="舊名稱資料庫丟棄失敗";#回傳結果return $result;}#if end}#if end#執行到這邊代表執行正確$result["status"]="true";#回傳結果return $result;}#function editDatabaseName/*#函式說明:#更改資料表的名稱.#回傳結果:#$result["status"],"true"代表執行成功;若失敗會回傳錯誤訊息.#$resuly["function"],當前執行的函數名稱.#$result["error"],錯誤訊息.#$result["sql"],執行的sql字串.#必填參數:#$conf["editedDataBaseName"],爲要更改的資料表所屬的資料庫名稱.$conf["editedDataBaseName"]="";#$conf["editedDataTableName"],爲要更改的資料表原始名稱.$conf["editedDataTableName"]="";#$conf["newDataTableName"],新的資料庫名稱.$conf["newDataTableName"]="";#$conf["dbAccount"],爲用於連入資料庫server時要使用的帳號.$conf["dbAccount"]=$dbAccount;#conf["dbAddress"],爲資料庫server的位置.$conf["dbAddress"]=$dbAddress;#可省略參數:#$conf["dbPassword"],爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,預設為3306.#$conf["dbPort"]="3306";#參考資料:#無.#備註:#無.*/public static function editDataTableName($conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#函式說明:#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。#回傳結果:#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#必填參數:$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("editedDataBaseName","editedDataTableName","newDataTableName","dbAccount","dbAddress");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");#可省略參數:$conf["variableType"]=array("string","string","string","string","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);unset($conf["variableCheck"]["isexistMuti"]);#如果 $checkResult["passed"]等於"false".if($checkResult["passed"]=="false"){#代表參數有錯#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#設定要執行的sql語法$sql="rename table ".$conf["editedDataBaseName"].".".$conf["editedDataTableName"]." to ".$conf["editedDataBaseName"].".".$conf["newDataTableName"].";";#函式說明:#執行mysql指令#回傳結果::#$result["status"],"true"為執行成功;"false"為執行失敗。#$result["error"],錯誤訊息的陣列#$result["queryResource"],mysql查詢後的resource資源,用於給mysql解析的資源變數。#$result["queryString"],mysql查詢的語言#查詢號的解果,需要解析。#必填參數:$conf["db"]["execMysqlQuery"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["execMysqlQuery"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["execMysqlQuery"]["dbSql"]=$sql;#要執行sql語法#可省略參數:#如果 $conf["dbPassword"] 有設定if(isset($conf["dbPassword"])){$conf["db"]["execMysqlQuery"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果 $conf["dbPort"] 有設定if(isset($conf["dbPort"])){$conf["db"]["execMysqlQuery"]["dbPort"]=$conf["dbPort"];#爲連線到mysql-Server時要使用的port.}#if end$db["execMysqlQuery"]=db::execMysqlQuery($conf["db"]["execMysqlQuery"]);unset($conf["db"]["execMysqlQuery"]);#如果 $db["execMysqlQuery"]["status"] 等於 "false".if($db["execMysqlQuery"]["status"]=="false"){#設置執行錯誤的識別$result["status"]="false";#設置錯誤訊息$result["error"]=$db["execMysqlQuery"]["error"];#回傳結果return $result;}#if end#取得執行的sql語法$result["sql"]=$db["execMysqlQuery"]["queryString"];#執行到這邊代表執行成功$result["status"]="true";#回傳結果return $result;}#function editDataTableName end/*#函式說明:#移除資料庫,會回傳一個陣列。#回傳結果:#$result["status"],若成功則爲"true",失敗則爲,"false"#$result["error"],錯誤訊息.#$result["function"],當前執行的函數名稱.#必填參數:$conf["dbAddress"]=$dbAddress;#爲mysql-Server的位置$conf["dbAccount"]=$dbAccount;#爲用於連入mysql-Server時要使用的帳號$conf["dropedDatabaseName"]=$dbName;#爲要移除的資料庫名稱#可省略參數:#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼.#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,預設為3306.#$conf["dbPort"]="3306";#參考資料:#無.#備註:#無.*/public static function dropDatabase($conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#函式說明:#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。#回傳結果:#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#必填參數:$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("dbAddress","dbAccount","dropedDatabaseName");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");#可省略參數:$conf["variableCheck"]["isexistMuti"]["variableType"]=array("string","string","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");#$conf["variableCheck"]["isexistMuti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);unset($conf["variableCheck"]["isexistMuti"]);#如果 $checkResult["passed"] 等於 "fasle"if($checkResult["passed"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#檢查要移除的資料庫爲系統資料庫#函式說明:#檢查一個數值是否與陣列裏面的元素相同#回傳結果::#$result["status"],"true"表示有找到相同的,"false"表示沒有找到相同的。#$result["equalVarName"],相等的變數內容。#$result["equalVarPosition"],相同的元素內容其位置爲該陣列元素的第幾個位置。#必填參數:$conf["search"]["getEqualVar"]["conditionElement"]=$conf["dropedDatabaseName"];#條件元素,要等於的元素內容。$conf["search"]["getEqualVar"]["compareElements"]=array("information_schema","mysql","performance_schema");#要比對的陣列變數內容。$searchResult=search::getEqualVar($conf["search"]["getEqualVar"]);unset($conf["search"]["getEqualVar"]);#如果檢查失敗if($searchResult["status"]=="false"){#設置失敗代碼$result["status"]="false";#設置錯誤訊息$result["error"]=$searchResult;#回傳結果return $result;}#if end#如果要移除的資料庫爲系統資料庫if($searchResult["founded"]=="true"){#設置失敗代碼$result["status"]="false";#設置錯誤訊息$result["error"]="您不能丟棄系統資料庫";#回傳結果return $result;}#if end#丟棄資料庫的sql語法$sql="DROP DATABASE ".$conf["dropedDatabaseName"];#執行sql語法#函式說明:#執行mysql指令#回傳結果::#$result["status"],"true"為執行成功;"false"為執行失敗。#$result["error"],錯誤訊息的陣列#$result["queryResource"],mysql查詢後的resource資源,用於給mysql解析的資源變數。#$result["queryString"],mysql查詢的語言#查詢號的解果,需要解析。#必填參數:$conf["db"]["execMysqlQuery"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["execMysqlQuery"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["execMysqlQuery"]["dbSql"]=$sql;#要執行sql語法#可省略參數:#如果 $conf["dbPassword"] 有設定if(isset($conf["dbPassword"])){$conf["db"]["execMysqlQuery"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果 $conf["dbPort"] 有設定if(isset($conf["dbPort"])){$conf["db"]["execMysqlQuery"]["dbPort"]=$conf["dbPort"];#爲連線到mysql-Server時要使用的port,可省略,若省略則代表不使用密碼}#if end$db["execMysqlQuery"]=db::execMysqlQuery($conf["db"]["execMysqlQuery"]);unset($conf["db"]["execMysqlQuery"]);#如果 $db["execMysqlQuery"]["status"] 等於 "false"if($db["execMysqlQuery"]["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$db["execMysqlQuery"];#回傳結果return $result;}#if end#執行到這邊代表執行正常$result["status"]="true";#回傳結果return $result;}#function dropDatabase end/*#函式說明:#備份資料庫#回傳結果::#$result["status"],"true"代表執行正常,"false"代表執行有誤.#$result["error"],錯誤訊息陣列.#$result["sqlAddress"],sql檔案的位置.#$result["function"],當前執行的函數名稱#必填參數:#$conf["backedDatabaseName"],字串.$conf["backedDatabaseName"]=$dbName;#爲要備份的資料庫名稱.#$conf["dbAddress"],字串,資料庫的位置.$conf["dbAddress"]=$dbAddress;#$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號.$conf["dbAccount"]=$dbAccount;#$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑$conf["fileArgu"]=__FILE__;#可省略參數:#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼#$conf["dbPassword"]=$dbPassword;#$conf["storePlace"],字串,要將輸出檔案儲存到哪邊,預設爲當前目錄.#$conf["storePlace"]="";#$conf["exportFileName"],字串,要輸出的檔案名稱,預設爲其export#$conf["exportFileName"]="export";#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,預設不使用.#$conf["dbPort"]="3306";#參考資料:#無.#備註:#無.*/public static function backupDatabase($conf){#原始語法# mysqldump --column-statistics=0 -u account --password=Password -Pport --default-character-set=utf8 --events --routines --single-transaction --skip-lock-tables --quick databaseName > "all.sql"#初始化要回傳的變數$result=array();#紀錄當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#函式說明:#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。#回傳結果:#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#必填參數:$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("fileArgu","backedDatabaseName","dbAccount","dbAddress");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");#可省略參數:$conf["variableCheck"]["isexistMuti"]["variableType"]=array("string","string","string","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);unset($conf["variableCheck"]["isexistMuti"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳錯誤訊息return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳錯誤訊息return $result;}#if end#檢查要備份的資料庫是否爲系統資料庫#函式說明:#檢查一個數值是否與陣列裏面的元素相同#回傳結果::#$result["status"],"true"表示有找到相同的,"false"表示沒有找到相同的。#$result["error"],錯誤訊息#$result["equalVarName"],相等的變數內容。#$result["equalVarPosition"],相同的元素內容其位置爲該陣列元素的第幾個位置。#必填參數:$conf["search"]["getEqualVar"]["conditionElement"]=$conf["backedDatabaseName"];#條件元素,要等於的元素內容。$conf["search"]["getEqualVar"]["compareElements"]=array("information_schema","mysql","performance_schema");#要比對的陣列變數內容。$searchResult=search::getEqualVar($conf["search"]["getEqualVar"]);unset($conf["search"]["getEqualVar"]);#如果檢查失敗if($searchResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$searchResult;#回傳結果return $result;}#if end#如果要備份的資料庫爲系統資料庫if($searchResult["founded"]=="true"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]="您不能備份系統資料庫";#回傳結果return $result;}#if end#初始化連線的密碼$dbPassword="";#如果 $conf["dbPassword"] 有設置if(isset($conf["dbPassword"])){#令存密碼$dbPassword=$conf["dbPassword"];#設置其連線密碼$conf["dbPassword"]="-p".$conf["dbPassword"];}#if end#反之else{#設爲空值$conf["dbPassword"]="";}#else end#如果 $conf["storePlace"] 沒有設置if(!isset($conf["storePlace"])){#將其設爲空值$conf["storePlace"]="";}#if end#反之有設定且結尾不為 "/"else if($conf["storePlace"][strlen($conf["storePlace"])-1]!=="/"){#在其路徑後方加上 /$conf["storePlace"]=$conf["storePlace"]."/";}#if end#如果 $conf["exportFileName"] 沒有設置if(!isset($conf["exportFileName"])){#設置預設名稱$conf["exportFileName"]="export.sql";}#if end#反之有設定else{#名稱結尾加上 .sql$conf["exportFileName"]=$conf["exportFileName"].".sql";}#else end#檢查資料庫是否存在#函式說明:#檢查該資料庫是否存在,結果會回傳一個陣列。#回傳結果:#$result["status"],設置執行錯誤.#$result["error"],錯誤訊息.#$result["exist"],有為"true",無為"false".#$result["function"],當前執行的函數名稱.#必填的參數$conf["db::checkDataBaseExists"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db::checkDataBaseExists"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db::checkDataBaseExists"]["checkDataBaseName"]=$conf["backedDatabaseName"];#爲要檢查是否存在的資料庫名稱#可省略參數#如果密碼不為""if($dbPassword!=""){$conf["db::checkDataBaseExists"]["dbPassword"]=$dbPassword;#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果有設置 $conf["dnPort"]if(isset($conf["dbPort"])){$conf["db::checkDataBaseExists"]["dbPort"]=$conf["dbPort"];}#if end$checkDataBaseExists=db::checkDataBaseExists($conf["db::checkDataBaseExists"]);unset($conf["db::checkDataBaseExists"]);#如果檢查資料庫是否存在失敗if($checkDataBaseExists["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkDataBaseExists;#回傳結果return $result;}#if end#如果資料庫不存在if($checkDataBaseExists["exist"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkDataBaseExists;#回傳結果return $result;}#if end#若有設置portif(isset($conf["dbPort"])){#指定port$port="-P".$conf["dbPort"];}#if end#反之else{#設置為空$port="";}#else end#透過以下指令判斷是否支援 --column-statistics 參數#mysqldump --help | grep "\--column-statistics" | wc -l#函式說明:#呼叫shell執行系統命令,並取得回傳的內容.#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列.#$result["function"],當前執行的函數名稱.#$result["argu"],使用的參數.#$result["cmd"],執行的指令內容.#$result["fullCmd"],如果參數 $conf["inBackGround"] 為 "true" 則會回傳該值.#$result["output"],爲執行完二元碼後的輸出陣列,若 $conf["inBackGround"] 為 "true",則為當下的輸出.#$result["tmpFileOutput"],儲存輸出的暫存檔案名稱,若 $conf["inBackGround"] 為 "true" 則會回傳該值.#$result["running"],是否還在執行.#$result["pid"],pid.#$result["statusCode"],執行結束後的代碼.#必填參數:#$conf["command"],字串,要執行的指令與.$conf["external::callShell"]["command"]="mysqldump";#$conf["fileArgu"],字串,變數__FILE__的內容.$conf["external::callShell"]["fileArgu"]=$conf["fileArgu"];#可省略參數:#$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.$conf["external::callShell"]["argu"]=array("--help","|","grep","\--column-statistics","|","wc","-l");#$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").#$conf["arguIsAddr"]=array();#$conf["plainArgu"],字串陣列,哪幾個參數不要加上"".#$conf["external::callShell"]["plainArgu"]=array("true","true","true","false","true","true","true");#$conf["pre"],陣列,要在本指令前執行的每個指令與參數.#$conf["pre"][$i]["cmd"],字串,要在本指令前執行的第$i+1個指令.#$conf["pre"][$i]["param"],陣列字串,要在本指令前執行的第$i+1個指令的參數.#$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".#$conf["enablePrintDescription"]="true";#$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容加上使用的$conf["argu"]參數.#$conf["printDescription"]="";#$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"false".$conf["external::callShell"]["escapeshellarg"]="true";#$conf["username"],字串,要用什麼使用者來執行,預設為執行php的使用者,該參數不適用於apache環境.#$conf["username"]="";#$conf["password"],字串,root的使用者密碼,預設不使用密碼,該參數不適用於apache環境.#$conf["password"]="";#$conf["useScript"],字串,是否要啟用Linux的script指令來記錄輸出,"true"代表要,Fedora的selinux會擋住該操作;"false"代表不要,預設為"false".#$conf["useScript"]="";#$conf["logFilePath"],字串,當 $conf["useScript"] 為 "true" 時,輸出的內容要暫存到哪裡,預設為 "/tmp/.qbpwcf_tmp/external/callShell/".#$conf["logFilePath"]=".qbpwcf_tmp/external/callShell/";#$conf["inBackGround"],字串,是否要在背景執行,且不會等待程式執行結束再執行下一個指令,"true"代表是,"false"代表不要,預設為"false",如果$conf["command"]有用「;」區隔的多個指令將會出錯.#$conf["inBackGround"]="";#$conf["getErr"],字串,"true"代表將錯誤輸出變成標準輸出,反之"false"為不變動.#$conf["getErr"]="false";#備註:#不是所有指令都能用apache的身份執行,目前已知java,javac指令無法執行,使用root身份可能會被selinux阻擋.#參考資料:#exec=>http://php.net/manual/en/function.exec.php#escapeshellcmd=>http://php.net/manual/en/function.escapeshellcmd.php#escapeshellarg=>http://php.net/manual/en/function.escapeshellarg.php$callShell=external::callShell($conf["external::callShell"]);unset($conf["external::callShell"]);#如果執行shell失敗if($callShell["status"]==="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$callShell;#回傳結果return $result;}#if end#初始化參數$conf["external::callShell"]["argu"]=array();#如果支援 --column-statistics 參數if($callShell["output"][0]==="1"){#增加參數$conf["external::callShell"]["argu"][]="--column-statistics=0";}#if end#輸出資料庫sql檔案#函式說明:#呼叫shell執行系統命令,並取得回傳的內容.#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列.#$result["function"],當前執行的函數名稱.#$result["argu"],使用的參數.#$result["cmd"],執行的指令內容.#$result["fullCmd"],如果參數 $conf["inBackGround"] 為 "true" 則會回傳該值.#$result["output"],爲執行完二元碼後的輸出陣列,若 $conf["inBackGround"] 為 "true",則為當下的輸出.#$result["tmpFileOutput"],儲存輸出的暫存檔案名稱,若 $conf["inBackGround"] 為 "true" 則會回傳該值.#$result["running"],是否還在執行.#$result["pid"],pid.#$result["statusCode"],執行結束後的代碼.#必填參數:#$conf["command"],字串,要執行的指令與.$conf["external::callShell"]["command"]="mysqldump";#$conf["fileArgu"],字串,變數__FILE__的內容.$conf["external::callShell"]["fileArgu"]=$conf["fileArgu"];#可省略參數:#$conf["argu"],陣列字串,指令搭配的參數,預設為空陣列.$conf["external::callShell"]["argu"][]="-u";$conf["external::callShell"]["argu"][]=$conf["dbAccount"];$conf["external::callShell"]["argu"][]=$conf["dbPassword"];$conf["external::callShell"]["argu"][]="-h";$conf["external::callShell"]["argu"][]=$conf["dbAddress"];#如果有指定 portif($port!==""){#設置port$conf["external::callShell"]["argu"][]=$port;}#if end$conf["external::callShell"]["argu"][]="--default-character-set=utf8";$conf["external::callShell"]["argu"][]="--events";$conf["external::callShell"]["argu"][]="--routines";$conf["external::callShell"]["argu"][]="--single-transaction";$conf["external::callShell"]["argu"][]="--skip-lock-tables";$conf["external::callShell"]["argu"][]="--quick";$conf["external::callShell"]["argu"][]=$conf["backedDatabaseName"];$conf["external::callShell"]["argu"][]=">";$conf["external::callShell"]["argu"][]=$conf["storePlace"].$conf["exportFileName"];#$conf["arguIsAddr"],陣列字串,指令搭配的哪些參數為路徑,為路徑的參數會進行轉換以便符合呼叫當前函數的位置,預設不指定,若有3個參數,其中第3個參數為路徑,則表示為array("false","false","true").#$conf["arguIsAddr"]=array();#$conf["pre"],陣列,要在本指令前執行的每個指令與參數.#$conf["pre"][$i]["cmd"],字串,要在本指令前執行的第$i+1個指令.#$conf["pre"][$i]["param"],陣列字串,要在本指令前執行的第$i+1個指令的參數.#$conf["enablePrintDescription"],字串,是否要印出$conf["printDescription"]的內容,"true"代表要,"false"代表不要,預設為"false".#$conf["enablePrintDescription"]="true";#$conf["printDescription"],字串,執行該外部程式前要印出來的的文字,預設為$conf["command"]的內容加上使用的$conf["argu"]參數.#$conf["printDescription"]="";#$conf["escapeshellarg"],字串,是否要啟用過濾參數,用了比較安全,但可能會出錯,"true"為啟用,"false"為不啟用,預設為"false".$conf["external::callShell"]["escapeshellarg"]="true";#$conf["username"],字串,要用什麼使用者來執行,預設為執行php的使用者,該參數不適用於apache環境.#$conf["username"]="";#$conf["password"],字串,root的使用者密碼,預設不使用密碼,該參數不適用於apache環境.#$conf["password"]="";#$conf["useScript"],字串,是否要啟用Linux的script指令來記錄輸出,"true"代表要,Fedora的selinux會擋住該操作;"false"代表不要,預設為"false".#$conf["useScript"]="";#$conf["logFilePath"],字串,當 $conf["useScript"] 為 "true" 時,輸出的內容要暫存到哪裡,預設為 "/tmp/.qbpwcf_tmp/external/callShell/".#$conf["logFilePath"]=".qbpwcf_tmp/external/callShell/";#$conf["inBackGround"],字串,是否要在背景執行,且不會等待程式執行結束再執行下一個指令,"true"代表是,"false"代表不要,預設為"false",如果$conf["command"]有用「;」區隔的多個指令將會出錯.#$conf["inBackGround"]="";#$conf["getErr"],字串,"true"代表將錯誤輸出變成標準輸出,反之"false"為不變動.#$conf["getErr"]="false";#備註:#不是所有指令都能用apache的身份執行,目前已知java,javac指令無法執行,使用root身份可能會被selinux阻擋.#參考資料:#exec=>http://php.net/manual/en/function.exec.php#escapeshellcmd=>http://php.net/manual/en/function.escapeshellcmd.php#escapeshellarg=>http://php.net/manual/en/function.escapeshellarg.php$callShell=external::callShell($conf["external::callShell"]);unset($conf["external::callShell"]);#如果執行shell失敗if($callShell["status"]==="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$callShell;#回傳結果return $result;}#if end#設置產生的sql檔案位置$result["sqlAddress"]=$conf["storePlace"].$conf["exportFileName"];#設置執行成功$result["status"]="true";#回傳結果return $result;}#function backupDatabase end/*#函式說明:#移除表,會回傳一個陣列。#回傳結果:#$result["status"],若成功則爲"true",失敗則爲,"false"#$result["error"],錯誤訊息.#$result["function"],當前執行的函數名稱.#必填參數:$conf["dbAddress"],字串,爲mysql-Server的位置$conf["dbAddress"]=$dbAddress;$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號$conf["dbAccount"]=$dbAccount;$conf["selectedDatabaseName"],字串,爲要移除的資料表位於哪個資料庫$conf["selectedDatabaseName"]=$dbName;$conf["dropedDataTableName"],字串,爲要移除的資料表名稱$conf["dropedDataTableName"]=$tableName;#爲要移除的資料表名稱#可省略參數:#$conf["dbPassword"],字串.爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,預設為3306.#$conf["dbPort"]="3306";#參考資料:#無.#備註:#無.*/public static function dropDataTable($conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#函式說明:#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。#回傳結果:#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#必填參數:$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("dbAddress","dbAccount","selectedDatabaseName","dropedDataTableName");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");#可省略參數:$conf["variableType"]=array("string","string","string","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);unset($conf["variableCheck"]["isexistMuti"]);#如果檢查不正常if($checkResult["status"]=="false"){#設置執行錯誤$result["status"]="fasle";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果:return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置執行錯誤$result["status"]="fasle";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果:return $result;}#if end#建立移除資料表的sql語言$sql="drop table ".$conf["selectedDatabaseName"].".".$conf["dropedDataTableName"].";";#函式說明:#執行mysql查詢的指令#回傳結果::#$result["status"],"true"為執行成功;"false"為執行失敗。#$result["error"],錯誤訊息的陣列#查詢號的解果,需要解析。#必填參數:$conf["db"]["execMysqlQuery"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["execMysqlQuery"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["execMysqlQuery"]["dbSql"]=$sql;#要執行sql語法#可省略參數:#如果有設定密碼if(isset($conf["dbPassword"])){$conf["db"]["execMysqlQuery"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#設置 $conf["dbPort"]$conf["db"]["execMysqlQuery"]["dbPort"]=$conf["dbPort"];}#if end$queryResult=db::execMysqlQuery($conf["db"]["execMysqlQuery"]);unset($conf["db"]["execMysqlQuery"]);#如果移除資料表失敗if($queryResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$queryResult["error"];#回傳結果return $result;}#if end#設置執行成功的訊息$result["status"]="true";#回傳結果return $result;}#funcotion dropDataTable end/*#函式說明:#查詢所有的資料庫列表,會回傳查詢的結果#回傳結果:#$result["status"],執行是否正常,"true"為正常,"fasle"為不正常#$result["error"],爲錯誤訊息#$result["function"],當前執行的函數名稱#$result["dbName"] 爲查詢的資料庫名稱陣列,第一筆資料庫名稱爲$result["dbName"][0],第二筆資料庫名稱爲$result["dbName"][1],其餘以此類推。#$result["dbCounts"] 爲資料庫的總筆數#必填參數:$conf["dbAddress"],字串,爲mysql-Server的位置.$conf["dbAddress"]=$dbAddress;$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號$conf["dbAccount"]=$dbAccount;#可省略參數:#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,預設為3306.#$conf["dbPort"]="3306";#參考資料:#無.#備註:#無.*/public static function getDataBaseList($conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。#回傳結果:#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#必填參數:$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("dbAddress","dbAccount");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");#可省略參數:#$conf["variableType"]=array();#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。#備註:#功能與checkExistAndType函式相同$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);unset($conf["variableCheck"]["isexistMuti"]);#如果 $checkResult["passed"]等於"fasle"if($checkResult["passed"]=="fasle"){#設置錯誤識別$result["status"]="fasle";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#連線到mysql-server#函式說明:#連線到mysql-server,會回傳一個陣列#回傳結果:#$result["status"],若連線成功則爲"true",連線失敗則爲"false"。#$result["connectInformation"],爲回傳的mysql連線資訊。#$result["error"],爲錯誤訊息陣列#必填參數:$conf["db"]["mysqlConnect"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置。$conf["db"]["mysqlConnect"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號。#可省略參數:#如果有設置 $conf["dbPassword"]if(isset($conf["dbPassword"])){$conf["db"]["mysqlConnect"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼。}#if end#如果有設置 $conf["dbPort"]if(isset($conf["dbPort"])){$conf["db"]["mysqlConnect"]["dbPort"]=$conf["dbPort"];#連線時用的port.}#if end$con=db::mysqlConnect($conf["db"]["mysqlConnect"]);unset($conf["db"]["mysqlConnect"]);#如果 $con["status"] 等於 "fasle"if($con["status"]=="fasle"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$con;#回傳結果return $result;}#if end#執行列出資料庫列表的SQL語法#函式說明:#執行mysql指令#回傳結果::#$result["status"],"true"為執行成功;"false"為執行失敗。#$result["error"],錯誤訊息的陣列#$result["function"],當前執行的涵式#$result["queryResource"],mysql查詢後的resource資源,用於給mysql解析的資源變數。#$result["queryString"],mysql查詢的語言#查詢號的解果,需要解析。#必填參數:$conf["db::execMysqlQuery"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db::execMysqlQuery"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db::execMysqlQuery"]["dbSql"]="show databases;";#要執行sql語法#可省略參數:#如果存在 $conf["dbPassword"]if(isset($conf["dbPassword"])){$conf["db::execMysqlQuery"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果存在 $conf["dbPort"]if(isset($conf["dbPort"])){$conf["db::execMysqlQuery"]["dbPort"]=$conf["dbPort"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end$execMysqlQuery=db::execMysqlQuery($conf["db::execMysqlQuery"]);unset($conf["db::execMysqlQuery"]);#如果執行SQL語法失敗if($execMysqlQuery["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$execMysqlQuery;#回傳結果return $result;}#if end#設定 $i 的初始值$times=0;#逐筆解析內容while($row=mysqli_fetch_assoc($execMysqlQuery["queryResource"])) {#將結果存進 $fetchResult[$times]$fetchResult[$times]= $row['Database'];#$times + 1 (計數用)$times++;}#while end#取得每筆資料內容(資料庫的名稱)$result["dbName"]=$fetchResult;#取得總共的資料筆數$result["dbCounts"]=$times;#執行到這邊代表執行成功$result["status"]="true";#回傳查詢的結果 $resultreturn $result;}#function getDataBaseList end/*#函式說明:#查詢特定資料庫裡的資料表列表,會回傳查詢的結果#回傳結果:#$result["status"],執行是否成功,"true"代表執行成功;"false"代表執行失敗。#$result["error"],執行錯誤的訊息.#$result["function"],當前執行的函式名稱.#$result["connectInformation"],爲回傳的mysql連線資訊。#$result["tableName"] 爲查詢的資料庫名稱陣列,#第一筆資料庫名稱爲$result["tableName"][0],#第二筆資料庫名稱爲$result["tableName"][1],#其餘以此類推。#$result["dataCounts"] 爲資料表的總筆數#必填參數:$conf["dbAddress"],字串,爲mysql-Server的位置$conf["dbAddress"]=$dbAddress;$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號$conf["dbAccount"]=$dbAccount;$conf["selectedDataBaseName"],字串,爲指定的資料庫名稱$conf["selectedDataBaseName"]=$dbName;#可省略參數:#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,預設為3306.#$conf["dbPort"]="3306";#參考資料:#無.#備註:#原始語法,show tables FROM databaseName,代表檢視databaseName裡面的資料表清單。*/public static function getDataTableList($conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#函式說明:#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。#回傳結果:#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#必填參數:$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("dbAddress","dbAccount","selectedDataBaseName");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");#可省略參數:#$conf["variableType"]=array();#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);unset($conf["variableCheck"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置錯誤訊息識別$result["status"]="fasle";#設置錯誤訊息$result["error"]=$checkResult;#回傳錯誤結果return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置錯誤訊息識別$result["status"]="fasle";#設置錯誤訊息$result["error"]=$checkResult;#回傳錯誤結果return $result;}#if end#要執行的 sql 語句$sql="show tables FROM ".$conf["selectedDataBaseName"].";";#函式說明:#執行mysql指令#回傳結果::#$result["status"],"true"為執行成功;"false"為執行失敗。#$result["error"],錯誤訊息的陣列#$result["queryResource"],mysql查詢後的resource資源,用於給mysql解析的資源變數。#$result["queryString"],mysql查詢的語言#查詢號的解果,需要解析。#必填參數:$conf["db.execMysqlQuery"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db.execMysqlQuery"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db.execMysqlQuery"]["dbSql"]=$sql;#要執行sql語法#可省略參數:#如果 $conf["dbPassword"] 有設定if(isset($conf["dbPassword"])){#$conf["db.execMysqlQuery"]["dbPassword"]=$dbPassword;#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼$conf["db.execMysqlQuery"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼。}#if end#如果 $conf["dbPort"] 有設定if(isset($conf["dbPort"])){#設置 dbPort$conf["db.execMysqlQuery"]["dbPort"]=$conf["dbPort"];}#if end$queryResult=db::execMysqlQuery($conf["db.execMysqlQuery"]);unset($conf["db.execMysqlQuery"]);#如果執行sql語法失敗if($queryResult["status"]=="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$queryResult;#回傳結果return $result;}#if end#將查詢的結果放進$queryResult裏面$queryResult=$queryResult["queryResource"];#debug#var_dump($queryResult);#設定 $times 的初始值$times=0;#初始化解析的內容儲存的地方$fetchResult=array();#逐筆解析內容while ($row = mysqli_fetch_assoc($queryResult)) {#將結果存進 $result[$i]$fetchResult[$times]= $row["Tables_in_".$conf["selectedDataBaseName"]];#$times + 1 (計數用)$times++;#debug#var_dump($row);}#while end#取得每筆資料內容(資料表的名稱)$result["tableName"]=$fetchResult;#取得總共的資料筆數$result["dataCounts"]=$times;#設置執行成功的識別$result["status"]="true";#回傳查詢的結果 $resultreturn $result;}#function getDataTableList end/*#函式說明:#取得資料表所有欄位的詳細資訊#回傳的內容:#$result["status"],執行結果,"true"代表執行成功;"false"代表執行失敗#$result["error"],錯誤訊息陣列#$result["function"],當前執行的函數名稱.#$result["sql"],執行的sql語法#$result["oriInput"],原始的資料表欄位資訊#$result["everyLine"],逐行的欄位資訊#$result["tableName"],當前查詢的資料表名稱#$result["engine"],資料表使用的儲存引擎#$result["charset"],資料表預設的編碼#$result["columnName"][$i],各欄位的名稱陣列,$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnVarTypeAndLengthLimit"][$i],各欄位儲存的變數形態與長度限制,$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnVarType"][$i],各欄位變數儲存的型態,$i爲1開始的數字,也可以使用欄位的名稱.#$result["columnVarLengthLimit"][$i],個欄位變數的長度限制,若不存在其限制,則為"",$i爲1開始的數字,也可以使用欄位的名稱.#$result["columnNotNull"][$i],各欄位是否不可爲null,"true"爲不可以爲null;"false"爲可爲"null",$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnAutoIncrement"][$i],各欄位是否會自動加1,"true"爲會;"false"爲不會,$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnDefault"][$i],各欄位的預設內容,若無則爲"沒有指定",$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnOnUpdateAction"][$i],當資料有修改時,該欄位的內容要怎麼因應,$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnCharacterSet"][$i],各欄位使用的CharacterSet,$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnCollate"][$i],各欄位使用的Collate,$i爲1開始的數字,也可以使用欄位的名稱。#$result["key"]["exist"],該資料表是否有索引鍵,"true"代表有;"false"代表沒有。#$result["key"][$j],該資料表的索引鍵陣列,$j爲0開始的數字,也可以使用欄位的名稱。#$result["keyConstraintName"][$j],該資料表用於識別索引鍵的CONSTRAINT名稱陣列,$j爲1開始的數字,也可以使用欄位的名稱。#$result["primaryKey"],該資料表的主鍵#$result["foreignKey"]["exist"],該資料表是否有foreign key,"true"代表有;"fasle"代表沒有。#$result["foreignKey"]["constraintName"][$k],用來識別外鍵的CONSTRAINT名稱陣列,$k爲1開始的數字,也可以使用欄位的名稱。#$result["foreignKey"]["columnName"][$k],外鍵的名稱陣列,$k爲1開始的數字,也可以使用欄位的名稱。#$result["foreignKey"]["referencesTable"][$k],外鍵參照的欄位,$k爲1開始的數字,,也可用欄位的名稱來找value.#$result["foreignKey"]["referencesColumn"][$k],外鍵參照的欄位屬於哪個資料表,$k爲1開始的數字,也可用欄位的名稱來找value.#$result["foreignKey"]["onUpdateAction"][$i],當參照的欄位資料更新時,會怎麼同步,$i爲1開始的數字,也可用欄位的名稱來找value.#$result["foreignKey"]["onDeleteAction"][$i],當參照的欄位資料移除時,會怎麼同步,$i爲1開始的數字,也可用欄位的名稱來找value.#必填參數:#$conf["dbAddress"],字串,資料庫的網路位置.$conf["dbAddress"]=$dbAddress;#$conf["dbAccount"],字串,連線到資料庫要用的帳號.$conf["dbAccount"]=$dbAccount;#$conf["selectedDataBase"],字串,連線到資料庫要選擇的資料庫.$conf["selectedDataBase"]=$dbName;#$conf["selectedDataTable"],字串,連線到資料庫要檢視的資料表.$conf["selectedDataTable"]="";#可省略參數:#$conf["dbPassword"],字串,連線到資料庫要用的密碼#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,預設為3306.#$conf["dbPort"]="3306";#參考資料:#無.#備註:#查詢的功能有點弱,目前用getTableColumnDetailInfo替代*/public static function getDataTableColumn($conf){return db::getTableColumnDetailInfo($conf);}#function getDataTableColumn end/*#函式說明:#取得資料表內特定欄位的資訊#回傳的內容:#$result["status"],"true"代表執行成功;"false"代表執行失敗.#$result["error"],錯誤訊息.#$result["function"],當前執行的函數名稱.#$result["columnInfo"]["name"],欄位的名稱.#$result["columnInfo"]["type"],欄位的儲存型態.#$result["columnInfo"]["length"],欄位的長度限制.#$result["columnInfo"]["null"],欄位是否可以為null.#$result["columnInfo"]["key"],索引鍵的名稱.#$result["columnInfo"]["keyType"],欄位的鍵屬性.#$result["columnInfo"]["foreignKeyConstraintName"],外建的名稱#$result["columnInfo"]["referencesTable"],外鍵參考的資料表.#$result["columnInfo"]["referencesColumn"],外鍵參考的資料表欄位.#$result["columnInfo"]["onUpdateAction"],當參考的欄位更新時,要怎麼因應.#$result["columnInfo"]["onDeleteAction"],當參考的欄位資料消失時,要怎麼因應.#$result["columnInfo"]["default"],欄位的預設內容.#$result["columnInfo"]["columnCharacterSet"],欄位的字元集.#$result["columnInfo"]["columnCollate"],欄位的校對編碼.#必填參數:$conf["dbAddress"],字串,爲mysql-Server的位置$conf["dbAddress"]=$dbAddress;$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號$conf["dbAccount"]=$dbAccount;$conf["dbName"]=$dbName;#爲指定的資料庫名稱$conf["dtName"]="";#為要檢視的資料表名稱$conf["columnName"],字串,為要檢視的資料欄位名稱$conf["columnName"]="";#為要檢視的資料欄位名稱#可省略參數:#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,預設為3306.#$conf["dbPort"]="3306";#參考資料:#無.#備註:#無.*/public static function getDataTableSpecificColumn(&$conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#$result["argu"],字串陣列,目前輸入的參數名稱陣列.#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.#$result["notNeedVar"],字串陣列,多餘的參數名稱.#必填參數:#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("dbAddress","dbAccount","dbName","dtName","columnName");#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string","string","string");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可省略參數:#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。#$conf["canBeEmptyString"]="false";#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("dbPassword","dbPort");#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null);#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();#參考資料:#array_keys=>http://php.net/manual/en/function.array-keys.php$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行失敗訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查沒有通過if($checkResult["passed"]=="false"){#設置執行失敗$result["status"]="false";#設置執行失敗訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#取得所有的欄位資訊#函式說明:#取得資料表所有欄位的詳細資訊#回傳的內容:#$result["status"],執行結果,"true"代表執行成功;"false"代表執行失敗#$result["error"],錯誤訊息陣列#$result["function"],當前執行的函數名稱.#$result["sql"],執行的sql語法#$result["oriInput"],原始的資料表欄位資訊#$result["everyLine"],逐行的欄位資訊#$result["tableName"],當前查詢的資料表名稱#$result["engine"],資料表使用的儲存引擎#$result["charset"],資料表預設的編碼#$result["columnName"][$i],各欄位的名稱陣列,$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnVarTypeAndLengthLimit"][$i],各欄位儲存的變數形態與長度限制,$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnVarType"][$i],各欄位變數儲存的型態,$i爲1開始的數字,也可以使用欄位的名稱.#$result["columnVarLengthLimit"][$i],個欄位變數的長度限制,若不存在其限制,則為"",$i爲1開始的數字,也可以使用欄位的名稱.#$result["columnNotNull"][$i],各欄位是否不可爲null,"true"爲不可以爲null;"false"爲可爲"null",$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnAutoIncrement"][$i],各欄位是否會自動加1,"true"爲會;"false"爲不會,$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnDefault"][$i],各欄位的預設內容,若無則爲"沒有指定",$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnOnUpdateAction"][$i],當資料有修改時,該欄位的內容要怎麼因應,$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnCharacterSet"][$i],各欄位使用的CharacterSet,$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnCollate"][$i],各欄位使用的Collate,$i爲1開始的數字,也可以使用欄位的名稱。#$result["key"]["exist"],該資料表是否有索引鍵,"true"代表有;"false"代表沒有。#$result["key"][$j],該資料表的索引鍵陣列,$j爲0開始的數字,也可以使用欄位的名稱。#$result["keyConstraintName"][$j],該資料表用於識別索引鍵的CONSTRAINT名稱陣列,$j爲1開始的數字,也可以使用欄位的名稱。#$result["primaryKey"],該資料表的主鍵#$result["foreignKey"]["exist"],該資料表是否有foreign key,"true"代表有;"fasle"代表沒有。#$result["foreignKey"]["constraintName"][$k],用來識別外鍵的CONSTRAINT名稱陣列,$k爲1開始的數字,也可以使用欄位的名稱。#$result["foreignKey"]["columnName"][$k],外鍵的名稱陣列,$k爲1開始的數字,也可以使用欄位的名稱。#$result["foreignKey"]["referencesTable"][$k],外鍵參照的欄位,$k爲1開始的數字,,也可用欄位的名稱來找value.#$result["foreignKey"]["referencesColumn"][$k],外鍵參照的欄位屬於哪個資料表,$k爲1開始的數字,也可用欄位的名稱來找value.#$result["foreignKey"]["onUpdateAction"][$i],當參照的欄位資料更新時,會怎麼同步,$i爲1開始的數字,也可用欄位的名稱來找value.#$result["foreignKey"]["onDeleteAction"][$i],當參照的欄位資料移除時,會怎麼同步,$i爲1開始的數字,也可用欄位的名稱來找value.#必填參數:$conf["db::getTableColumnDetailInfo"]["dbAddress"]=$conf["dbAddress"];#資料庫的網路位置$conf["db::getTableColumnDetailInfo"]["dbAccount"]=$conf["dbAccount"];#連線到資料庫要用的帳號$conf["db::getTableColumnDetailInfo"]["selectedDataBase"]=$conf["dbName"];#連線到資料庫要選擇的資料庫$conf["db::getTableColumnDetailInfo"]["selectedDataTable"]=$conf["dtName"];#連線到資料庫要檢視的資料表#可省略參數:#如果有設定連線密碼if(isset($conf["dbPassword"])){$conf["db::getTableColumnDetailInfo"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果有設定連線portif(isset($conf["dbPort"])){$conf["db::getTableColumnDetailInfo"]["dbPort"]=$conf["dbPort"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end$queryResult=db::getTableColumnDetailInfo($conf["db::getTableColumnDetailInfo"]);unset($conf["db::getTableColumnDetailInfo"]);#如果查詢失敗if($queryResult["status"]=="false"){#設置錯誤$result["status"]="false";#設置錯誤訊息$result["error"]=$queryResult;#回傳結果return $result;}#if end#var_dump($queryResult);#檢查是否有我們要的欄位存在#函式說明:#檢查一個數值是否與陣列裏面的元素相同#回傳結果::#$result["status"],"true"表示執行正確,"false"表示執行錯誤.#$result["founded"],"true"表示有找到相同的,"false"表示沒有找到相同的.#$result["error"],錯誤訊息#$result["function"],當前執行的函數名稱#$result["equalVarName"],相等的變數名稱或key.#$result["equalVarValue"],相等的變數數值內容.#必填參數:$conf["search"]["getEqualVar"]["conditionElement"]=$conf["columnName"];#條件元素,要等於的元素內容。$conf["search"]["getEqualVar"]["compareElements"]=$queryResult["columnName"];#要比對的陣列變數內容。$searchResult=search::getEqualVar($conf["search"]["getEqualVar"]);unset($conf["search"]["getEqualVar"]);#如果尋找失敗if($searchResult["status"]=="false"){#設置錯誤$result["status"]="false";#設置錯誤訊息$result["error"]=$searchResult;#回傳結果return $result;}#if end#如果沒有找到符合的欄位明稱if($searchResult["founded"]=="false"){#設置錯誤$result["status"]="false";#設置錯誤訊息$result["error"]="沒有找到指定的欄位!";#回傳結果return $result;}#if end#取得欄位資訊的key$equalVarKey=$searchResult["equalVarName"];#取得欄位的名稱$result["columnInfo"]["name"]=$queryResult["columnName"][$equalVarKey];#取欄位的儲存型態與長度限制$result["columnInfo"]["type"]=$queryResult["columnVarType"][$equalVarKey];#檢查欄位儲存型態是否含有「(」與「)」#函式說明:#檢查一個字串裡面是否有多個關鍵字#回傳結果::#$result["status"],"true"代表執行成功,"false"代表執行失敗。#$result["error"],錯誤訊息#$result["founded"],是否找到所有的關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字。#必填參數:$conf["search"]["findManyKeyWords"]["keyWords"]=array("(",")");#想要搜尋的關鍵字$conf["search"]["findManyKeyWords"]["string"]=$result["columnInfo"]["type"];#要被搜尋的字串內容#可省略參數:#$conf["search"]["findManyKeyWords"]["completeEqual"]="true";#是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。$searchResult=search::findManyKeyWords($conf["search"]["findManyKeyWords"]);unset($conf["search"]["findManyKeyWords"]);#如果 檢查欄位儲存型態是否含有「(」與「)」 失敗if($searchResult["status"]=="false"){#設置錯誤$result["status"]="false";#設置錯誤訊息$result["error"]=$searchResult;#回傳結果return $result;}#if end#如果欄位儲存型態含有「(」與「)」,則將其從「(」開始分割if($searchResult["founded"]=="true"){#函式說明:#將固定格式的字串分開,並回傳分開的結果。#回傳的參數:#$result["oriStr"],要分割的原始字串內容#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。#$result["dataCounts"],爲總共分成幾段#必填參數:$conf["stringProcess"]["spiltString"]["stringIn"]=$result["columnInfo"]["type"];#要處理的字串。$conf["stringProcess"]["spiltString"]["spiltSymbol"]="(";#爲以哪個符號作爲分割$spiltedStr=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);unset($conf["stringProcess"]["spiltString"]);#如果分割字串失敗if($spiltedStr["status"]=="false"){#設置錯誤$result["status"]="false";#設置錯誤訊息$result["error"]=$spiltedStr;#回傳結果return $result;}#if end#取得欄位型態$result["columnInfo"]["type"]=$spiltedStr["dataArray"][0];}#if end#取得欄位長度限制$result["columnInfo"]["length"]=$queryResult["columnVarLengthLimit"][$conf["columnName"]];#取得欄位是否可以為null$result["columnInfo"]["null"]=$queryResult["columnNotNull"][$conf["columnName"]];#如果該欄位有key的名稱if(isset($queryResult["key"][$conf["columnName"]])){#該欄位為index key$result["columnInfo"]["keyType"]="index key";#取得欄位的鍵名稱$result["columnInfo"]["key"]=$queryResult["keyConstraintName"];}#if end#如果該欄位是foreignKeyif(isset($queryResult["foreignKey"]["constraintName"][$conf["columnName"]])){#該欄位為foreign key$result["columnInfo"]["keyType"]="foreign key";#取得外鍵的名稱$result["columnInfo"]["foreignKeyConstraintName"]=$queryResult["foreignKey"]["constraintName"][$conf["columnName"]];#取得外鍵參考的資料表$result["columnInfo"]["referencesTable"]=$queryResult["foreignKey"]["referencesTable"][$conf["columnName"]];#取得外按鍵參考的欄位$result["columnInfo"]["referencesColumn"]=$queryResult["foreignKey"]["referencesColumn"][$conf["columnName"]];#當參考的欄位更新時,要怎麼因應$result["columnInfo"]["onUpdateAction"]=$queryResult["foreignKey"]["onUpdateAction"][$conf["columnName"]];#當參考的欄位資料消失時,要怎麼因應$result["columnInfo"]["onDeleteAction"]=$queryResult["foreignKey"]["onDeleteAction"][$conf["columnName"]];}#if enb#取得欄位的預設內容$result["columnInfo"]["default"]=$queryResult["columnDefault"][$conf["columnName"]];#取得欄位的字元集$result["columnInfo"]["columnCharacterSet"]=$queryResult["columnCharacterSet"][$conf["columnName"]];#取得欄位的校對編碼設定$result["columnInfo"]["columnCollate"]=$queryResult["columnCollate"][$conf["columnName"]];#設置執行成功$result["status"]="true";#回傳結果return $result;}#function getDataTableSpecificColumn end/*#函式說明:#檢查資料庫裏的資料表有無指定條件的資料#回傳結果::#$result["status"],執行是否成功,成功為"true",失敗為"false"。#$result["error"],錯誤訊息#$result["founded"],是否找到資料,"true"代表有符合的資料;"false"代表沒有符合的資料.#$result["sql"],執行的sql字串.#$result["function"],當前執行的函數名稱.#必填參數:$conf["dbAddress"],字串,爲mysql-Server的位置$conf["dbAddress"]="";$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號$conf["dbAccount"]="";$conf["selectedDataBaseName"],字串,爲指定的資料庫名稱,欲選擇的資料庫名稱$conf["selectedDataBaseName"]="";$conf["selectedDataTableName"],字串,欲選擇的資料表名稱$conf["selectedDataTableName"]="";#可省略參數:#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼.#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,可省略,若省略則代表使用預設的3306 port.#$conf["dbPort"]="";#$conf["conditionTargetName"],字串陣列,用來判斷的資料表數值名稱,需爲陣列,可省略#$conf["conditionTargetName"]=array("");#$conf["conditionTargetValue"],字串陣列,用來判斷的資料表數值名稱若等於該數值,表示條件成立,需爲陣列,可省略#$conf["conditionTargetValue"]=array("");#參考資料:#無.#備註:#無.*/public static function checkDataExists($conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#函式說明:#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。#回傳結果:#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#必填參數:$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("dbAddress","dbAccount","selectedDataBaseName","selectedDataTableName");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");#可省略參數:$conf["variableType"]=array("string","string","string","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。#備註:#功能與checkExistAndType函式相同$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);unset($conf["variableCheck"]["isexistMuti"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查沒有通過if($checkResult["passed"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果 $conf["conditionTargetName"] 有設定if(isset($conf["conditionTargetName"])){#如果其形態不爲 arrayif(gettype($conf["conditionTargetName"])!="array"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]="\$conf[\"conditionTargetName\"]須爲陣列值";#回傳結果return $result;}#if end}#if end#如果 $conf["conditionTargetValue"] 有設定if(isset($conf["conditionTargetValue"])){#如果其形態不爲 arrayif(gettype($conf["conditionTargetValue"])!="array"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]="\$conf[\"conditionTargetValue\"]須爲陣列值";#回傳結果return $result;}#if end}#if end#函式說明:#一次取得資料庫、表的資料#回傳結果:#$result["status"],執行結果"true"為成功;"false"為執行失敗。#$result["error"],錯誤訊息陣列。#$result["dataContent"],爲資料的內容。#$result["dataContent"][$conf["WhereColumnName"][$i]][$dataSetNum]#$dataSetNum 爲第$dataSetNum+1筆資料#$conf["WhereColumnName"][$i] 爲第 $i+1 個欄位的名稱#$result["dataCount"],爲取得的資料筆數。#必填參數:$conf["db"]["fastGetDbData"]["dbAddress"]=$conf["dbAddress"];#爲dbServer的位置。$conf["db"]["fastGetDbData"]["dbAccount"]=$conf["dbAccount"];#爲登入dbServer的帳號。$conf["db"]["fastGetDbData"]["dbName"]=$conf["selectedDataBaseName"];#爲要存取的資料庫名稱$conf["db"]["fastGetDbData"]["tableName"]=$conf["selectedDataTableName"];#爲要存取的資料表名稱$conf["db"]["fastGetDbData"]["columnYouWant"]=$conf["conditionTargetName"];#你想要的欄位!#可省略參數:#如果 $conf["dbPassword"] 有設置if(isset($conf["dbPassword"])){$conf["db"]["fastGetDbData"]["dbPassword"]=$conf["dbPassword"];#爲要存取dbServer的密碼}#if end#如果 $conf["dbPort"] 有設置if(isset($conf["dbPort"])){$conf["db"]["fastGetDbData"]["dbPort"]=$conf["dbPort"];#爲要存取dbServer的port}#if end$conf["db"]["fastGetDbData"]["WhereColumnName"]=$conf["conditionTargetName"];#用於判斷語句的欄位項目陣列。$conf["db"]["fastGetDbData"]["WhereColumnValue"]=$conf["conditionTargetValue"];#用於判斷語句的欄位數值陣列,若與LIKE搭配,則可以在關鍵自字串的左右名加上「%」符號,這樣就可以搜尋具有該字串的內容。#$conf["db"]["fastGetDbData"]["WhereColumnCombine"]=array("");#用於判斷語句當中需要()起來的判斷式,須爲陣列值,"s"代表「(」,"e"代表「)」 ,若無則須設爲""。#$conf["db"]["fastGetDbData"]["WhereColumnOperator"]=array("");#用於判斷語句的比較符號陣列,可以用的符號有「"="、">"、"<"、"LIKE"、"NOT LIKE"」,預設都爲「=」。#$conf["db"]["fastGetDbData"]["WhereColumnAndOr"]=array("");#用於判斷語句條件之間成立的條件是AND還是OR,須爲陣列值。其數量應爲要判斷的欄位數量減一。#$conf["db"]["fastGetDbData"]["orderItem"]="";#爲排序的項目依據,若要用隨機抽樣,可以用"rand()",可省略。#$conf["db"]["fastGetDbData"]["ascORdesc"]="";#爲要低增還是遞減排序,asc爲遞增;desc爲遞減。#$conf["db"]["fastGetDbData"]["numberStart"]="0";#為從第幾筆開始讀取,預設為0,代筆第一筆。#$conf["db"]["fastGetDbData"]["numLimit"]="30";#為要取幾筆資料,可以省略,省略則表示不限制數目。#$conf["db"]["fastGetDbData"]["groupBy"]=array("");#爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆)。$dataResult=db::fastGetDbData($conf["db"]["fastGetDbData"]);unset($conf["db"]["fastGetDbData"]);#如果查詢資料失敗if($dataResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$dataResult;#回傳結果return $result;}#if end#取得執行的sql字串$result["sql"]=$dataResult["sql"];#如果 $dataResult["status"] 等於"false"if($dataResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$dataResult;#回傳結果return $result;}#if end#如果$dataResult["dataCount"]沒設定,就表示沒找到相符的資料if(!isset($dataResult["dataCount"])){#設置錯誤識別$result["status"]="true";#設置沒有找到符合資料$result["founded"]="false";#回傳結果return $result;}#if end#如果符合的資料等於0if($dataResult["dataCount"]==0){#設置錯誤識別$result["status"]="true";#設置沒有找到符合資料$result["founded"]="false";#回傳結果return $result;}#if end#執行到這邊代表執行成功$result["status"]="true";#設置有找到符合資料$result["founded"]="true";#回傳結果return $result;}#function checkDataExists/*#函式說明:#檢查資料表是否存在#回傳結果::#設置執行錯誤的識別#$result["status"],"true"代表執行成功;"false"代表執行失敗.#$result["error"],錯誤訊息.#$result["founded"],是否有有找到相同的,"true"代表有找到符合的資料;"false"代表沒有符合的資料.#$result["function"],當前執行的函數名稱.#$result["argu"],使用的參數#其餘的結果代表參數不正確#必填參數:#$conf["dbAddress"],字串,爲mysql-Server的位置$conf["dbAddress"]=$dbAddress;#$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號$conf["dbAccount"]=$dbAccount;#$conf["selectedDataBaseName"],字串,爲指定的資料庫名稱$conf["selectedDataBaseName"]="";#$conf["selectedDataTableName"],字串,為要檢查是否存在的資料表名稱$conf["selectedDataTableName"]="";#可省略參數#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,可省略,若省略則代表使用預設的3306 port.#$conf["dbPort"]="";#參考資料:#無.#備註:#無.*/public static function checkDataTableExists($conf){#初始化要回傳的變數$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#取得參數$result["argu"]=$conf;#函式說明:#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。#回傳結果:#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#必填參數:$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("dbAddress","dbAccount","selectedDataBaseName","selectedDataTableName");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");#可省略參數:$conf["variableType"]=array("string","string","string","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);unset($conf["variableCheck"]["isexistMuti"]);#var_dump($checkResult);#如果檢查不通過if($checkResult["passed"]=="false"){#設置執行錯誤的識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#查詢特定資料庫裡的資料表列表,會回傳查詢的結果#$result["status"],若成功則爲0,失敗則爲1。#$result["error"],錯誤訊息陣列.#$result["tableName"] 爲查詢的資料庫名稱陣列,#第一筆資料庫名稱爲$result["tableName"][0],#第二筆資料庫名稱爲$result["tableName"][1],#其餘以此類推。#$result["dataCounts"] 爲資料庫的總筆數#必填參數:$conf["db"]["getDataTableList"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["getDataTableList"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["getDataTableList"]["selectedDataBaseName"]=$conf["selectedDataBaseName"];#爲指定的資料庫名稱#可省略參數:#如果 $conf["dbPassword"] 有設定if(isset($conf["dbPassword"])){#設定連線時要用的密碼$conf["db"]["getDataTableList"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果 $conf["dbPort"] 有設定if(isset($conf["dbPort"])){#設定連線時要用的密碼$conf["db"]["getDataTableList"]["dbPort"]=$conf["dbPort"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#原始語法:#show tables FROM databaseName,代表檢視databaseName裡面的資料表清單。$dataTableList=db::getDataTableList($conf["db"]["getDataTableList"]);unset($conf["db"]["getDataTableList"]);#如果調閱資料表清單出錯if($dataTableList["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$dataTableList;#回傳結果return $result;}#if end#如果裡面沒有任何1個資料表if($dataTableList["dataCounts"]==0){#設置執行成功的識別$result["status"]="true";#設置有找到相同的$result["founded"]="false";#回傳結果return $result;}#if end#函式說明:#檢查一個數值是否與陣列裏面的元素相同#回傳結果::#$result["status"],"true"表示執行正確,"false"表示執行錯誤.#$result["founded"],"true"表示有找到相同的,"false"表示沒有找到相同的.#$result["error"],錯誤訊息#$result["function"],當前執行的函數名稱#$result["argv"],使用的參數#$result["equalVarName"],相等的變數名稱或key.#$result["equalVarValue"],相等的變數數值內容.#必填參數:$conf["search"]["getEqualVar"]["conditionElement"]=$conf["selectedDataTableName"];#條件元素,要等於的元素內容。$conf["search"]["getEqualVar"]["compareElements"]=$dataTableList["tableName"];#要比對的陣列變數內容。$checkResult=search::getEqualVar($conf["search"]["getEqualVar"]);unset($conf["search"]["getEqualVar"]);#如果有找到相同的元素if($checkResult["founded"]==="true"){#設置執行成功的識別$result["status"]="true";#設置有找到相同的$result["founded"]="true";#回傳結果return $result;}#if end#如果沒有找到相同的元素if($checkResult["founded"]==="false"){#設置執行成功的識別$result["status"]="true";#設置有找到相同的$result["founded"]="false";#回傳結果return $result;}#if end#不應該執行到這邊#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]="不應該出現的例外狀況";#回傳結果return $result;}#funcrion checkDataTableExists end/*#函式說明:#檢查資料表的欄位是否存在#回傳結果::#設置執行錯誤的識別#$result["function"],當前執行的函數名稱.#$result["status"],"true"代表執行成功;"false"代表執行失敗.#$result["error"],錯誤訊息.#$result["warning"],警告訊息陣列#$result["passed"],是否通過檢查,"true"代表通過;"false"代表不通過.#其餘的結果代表參數不正確#必填參數:#$conf["dbAddr"],字串,爲mysql-Server的位置$conf["dbAddr"]=$dbAddress;#$conf["dbAcct"],字串,爲用於連入mysql-Server時要使用的帳號$conf["dbAcct"]=$dbAccount;#$conf["dbName"],字串,爲指定的資料庫名稱$conf["dbName"]="";#$conf["dtName"],字串,為要檢查是否存在的資料表名稱$conf["dtName"]="";#$conf["col"],字串陣列,要檢查的欄位名稱.$conf["col"]=array();#可省略參數#$conf["dbPass"],爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼#$conf["dbPass"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,可省略,若省略則代表使用預設的3306 port.#$conf["dbPort"]="";#參考資料:#無.#備註:#無.*/public static function checkTableColExists(&$conf=array()){#初始化要回傳的結果$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果沒有參數if(func_num_args()==0){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]="函數".$result["function"]."需要參數";#回傳結果return $result;}#if end#取得參數$result["argu"]=$conf;#如果 $conf 不為陣列if(gettype($conf)!=="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf===null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.#$result["argu"],字串陣列,目前輸入的參數名稱陣列.#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.#$result["notNeedVar"],字串陣列,多餘的參數名稱.#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可以省略的參數:#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("dbAddr","dbName","dbAcct","dtName","col");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string","string","array");#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.#$conf["canBeEmptyString"]="false";#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.#$conf["canNotBeEmpty"]=array();#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.#$conf["canBeEmpty"]=array();#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.#$conf["skipableVariableCanNotBeEmpty"]=array();#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("dbPass","dbPort");#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null);#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".#$conf["disallowAllSkipableVarIsEmpty"]="";#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".#$conf["disallowAllSkipableVarIsEmptyArray"]="";#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();#參考資料:#array_keys=>http://php.net/manual/en/function.array-keys.php$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果檢查失敗if($checkArguments["status"]==="false"){#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["error"]=$checkArguments["error"];#回傳結果return $result;}#if end#如果檢查不通過if($checkArguments["passed"]==="false"){#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["error"]=$checkArguments["error"];#回傳結果return $result;}#if end#函式說明:#取得資料表所有欄位的詳細資訊#回傳的內容:#$result["status"],執行結果,"true"代表執行成功;"false"代表執行失敗#$result["error"],錯誤訊息陣列#$result["function"],當前執行的函數名稱.#$result["sql"],執行的sql語法#$result["oriInput"],原始的資料表欄位資訊#$result["everyLine"],逐行的欄位資訊#$result["tableName"],當前查詢的資料表名稱#$result["engine"],資料表使用的儲存引擎#$result["charset"],資料表預設的編碼#$result["columnName"][$i],各欄位的名稱陣列,$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnVarTypeAndLengthLimit"][$i],各欄位儲存的變數形態與長度限制,$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnVarType"][$i],各欄位變數儲存的型態,$i爲1開始的數字,也可以使用欄位的名稱.#$result["columnVarLengthLimit"][$i],個欄位變數的長度限制,若不存在其限制,則為"",$i爲1開始的數字,也可以使用欄位的名稱.#$result["columnNotNull"][$i],各欄位是否不可爲null,"true"爲不可以爲null;"false"爲可爲"null",$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnAutoIncrement"][$i],各欄位是否會自動加1,"true"爲會;"false"爲不會,$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnDefault"][$i],各欄位的預設內容,若無則爲"沒有指定",$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnOnUpdateAction"][$i],當資料有修改時,該欄位的內容要怎麼因應,$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnCharacterSet"][$i],各欄位使用的CharacterSet,$i爲1開始的數字,也可以使用欄位的名稱。#$result["columnCollate"][$i],各欄位使用的Collate,$i爲1開始的數字,也可以使用欄位的名稱。#$result["key"]["exist"],該資料表是否有索引鍵,"true"代表有;"false"代表沒有。#$result["key"][$j],該資料表的索引鍵陣列,$j爲0開始的數字,也可以使用欄位的名稱。#$result["keyConstraintName"][$j],該資料表用於識別索引鍵的CONSTRAINT名稱陣列,$j爲1開始的數字,也可以使用欄位的名稱。#$result["primaryKey"],該資料表的主鍵#$result["foreignKey"]["exist"],該資料表是否有foreign key,"true"代表有;"fasle"代表沒有。#$result["foreignKey"]["constraintName"][$k],用來識別外鍵的CONSTRAINT名稱陣列,$k爲1開始的數字,也可以使用欄位的名稱。#$result["foreignKey"]["columnName"][$k],外鍵的名稱陣列,$k爲1開始的數字,也可以使用欄位的名稱。#$result["foreignKey"]["referencesTable"][$k],外鍵參照的欄位,$k爲1開始的數字,,也可用欄位的名稱來找value.#$result["foreignKey"]["referencesColumn"][$k],外鍵參照的欄位屬於哪個資料表,$k爲1開始的數字,也可用欄位的名稱來找value.#$result["foreignKey"]["onUpdateAction"][$i],當參照的欄位資料更新時,會怎麼同步,$i爲1開始的數字,也可用欄位的名稱來找value.#$result["foreignKey"]["onDeleteAction"][$i],當參照的欄位資料移除時,會怎麼同步,$i爲1開始的數字,也可用欄位的名稱來找value.#必填參數:$conf["db::getDataTableColumn"]["dbAddress"]=$conf["dbAddr"];#資料庫的網路位置$conf["db::getDataTableColumn"]["dbAccount"]=$conf["dbAcct"];#連線到資料庫要用的帳號$conf["db::getDataTableColumn"]["selectedDataBase"]=$conf["dbName"];#連線到資料庫要選擇的資料庫$conf["db::getDataTableColumn"]["selectedDataTable"]=$conf["dtName"];#連線到資料庫要檢視的資料表#可省略參數:if(isset($conf["dbPass"])){#$conf["dbPassword"]=$dbPassword;#連線到資料庫要用的密碼$conf["db::getDataTableColumn"]["dbPassword"]=$conf["dbPass"];}#if end#如果有設置 $conf["dbPort"]if(isset($conf["dbPort"])){#$conf["dbPort"]=$dbPort;#連線到資料庫要用的port$conf["db::getDataTableColumn"]["dbPort"]=$conf["dbPass"];}#if end#備註:#查詢的功能有點弱,目前用getTableColumnDetailInfo替代$getDataTableColumn=db::getDataTableColumn($conf["db::getDataTableColumn"]);unset($conf["db::getDataTableColumn"]);#如果查詢失敗if($getDataTableColumn["status"]==="false"){#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["error"]=$getDataTableColumn["error"];#回傳結果return $result;}#if end#初始化通過檢查$result["passed"]="true";#針對每個要檢查的欄位foreach($conf["col"] as $colName){#如果欄位 $colName 不存在if(!in_array($colName,$getDataTableColumn["columnName"])){#設置欄位不存在的警告訊息$result["warning"][]="欄位 ".$colName." 不存在";#設置未通過檢查$result["passed"]="false";}#if end}#foreach end#設置執行正常$result["status"]="true";#回傳結果return $result;}#function checkTableColExists end/*#函式說明:#檢查該資料庫是否存在,結果會回傳一個陣列。#回傳結果:#$result["status"],"true"代表執行成功;"false"代表執行失敗.#$result["error"],錯誤訊息.#$result["exist"],有為"true",無為"false".#$result["function"],當前執行的函數名稱.#必填參數:#$conf["dbAddress"],字串,爲mysql-Server的位置$conf["dbAddress"]=$dbAddress;#$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號$conf["dbAccount"]=$dbAccount;#$conf["checkDataBaseName"],字串,爲要檢查是否存在的資料庫名稱$conf["checkDataBaseName"]="";#可省略參數:#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼.#$conf["dbPassword"]="";#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,可省略,若省略則代表使用預設的3306 port.#$conf["dbPort"]="";#參考資料:#無.#備註:#無.*/public static function checkDataBaseExists($conf){#初始化要回傳的變數$result=array();#紀錄當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。#回傳結果:#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#必填參數:$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("dbAddress","dbAccount","checkDataBaseName");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");#可省略參數:#$conf["variableType"]=array();#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。#備註:#功能與checkExistAndType函式相同$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);unset($conf["variableCheck"]["isexistMuti"]);#如果 $checkResult["status"] 等於 "false"if($checkResult["status"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果 $checkResult["passed"] 等於 "false"if($checkResult["passed"]=="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"]=$checkResult;#回傳結果return $result;}#if end#取得資料庫列表的語法#查詢所有的資料庫列表,會回傳查詢的結果#$result["status"],執行是否正常,"true"為正常,"fasle"為不正常#$result["error"],爲錯誤訊息#$result["connectInformation"],爲回傳的mysql連線資訊。#$result["dbName"] 爲查詢的資料庫名稱陣列,第一筆資料庫名稱爲$result["dbName"][0],第二筆資料庫名稱爲$result["dbName"][1],其餘以此類推。#$result["dbCounts"] 爲資料庫的總筆數#必填參數:$conf["db"]["getDataBaseList"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["getDataBaseList"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號#可省略參數:#如果 $conf["dbPassword"] 有設定if(isset($conf["dbPassword"])){$conf["db"]["getDataBaseList"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果 $conf["dbPort"] 有設定if(isset($conf["dbPort"])){$conf["db"]["getDataBaseList"]["dbPort"]=$conf["dbPort"];#爲連線到mysql-Server時要使用的port,可省略,若省略則代表預設的3306.}#if end$queryResult=db::getDataBaseList($conf["db"]["getDataBaseList"]);unset($conf["db"]["getDataBaseList"]);#如果 $queryResult["status"] 等於 "fasle"if($queryResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$queryResult;#回傳結果return $result;}#if end#有幾個資料庫就檢查該名稱有沒有重複for($i=0;$i<$queryResult["dbCounts"];$i++){#檢查名稱是否相同if($queryResult["dbName"][$i]==$conf["checkDataBaseName"]){#相同名稱代表資料庫重複$result["exist"]="true";#跳出迴圈break;}#判斷式結束}#迴圈結束#如果 $result["exist"] 沒有設定if(!isset($result["exist"])){#代表都沒有相同的名稱就代表沒有重複$result["exist"]="false";}#if end#執行到這邊代表執行正常$result["status"]="true";#回傳結果return $result;}#function checkDataBaseExists end/*#函式說明:#尋找特定資料庫裏特定資料表裏面特定欄位有無可用整數編號,可以指定數字的起點與終點,此函式會回傳可用的編號。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["error"],錯誤訊息陣列#$result["function"],當前執行的函數.#$result["founded"],爲搜尋可以用的數字是否成功,"true"表示成功,"false"表示失敗.#$result["usableNumber"],爲可用的整數。#$result["sql"],執行的sql語法.#必填參數:#$conf["dbAddress"],字串,爲mysql-Server的位置.$conf["dbAddress"]=$dbAddress;#$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號$conf["dbAccount"]=$dbAccount;#$conf["selectedDataBaseName"],字串,爲要檢查的資料庫名稱$conf["selectedDataBaseName"]=$dbName;#$conf["checkDataTableName"],字串,爲要檢查的資料表名稱$conf["checkDataTableName"]="";#$conf["conditionTargetName"]字串,用來判斷的資料表數值名稱$conf["conditionTargetName"]="";#$conf["startPoint"],字串,要執行的迴圈起點(資料的起始檢查點),須為整數.$conf["startPoint"]="";#$conf["endPoint"],字串,要執行的迴圈終點(資料的結束檢查點),須為整數.$conf["endPoint"]="";#可省略參數:#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼.#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,可省略,若省略則代表使用預設的3306 port.#$conf["dbPort"]="";#$conf["otherConditionTargetName"]=array();#查詢欄位項目可用數值的其它條件欄位名稱,爲陣列值。須搭配 $conf["otherConditionTargetValue"] 一起使用#$conf["otherConditionTargetName"]=array();#$conf["otherConditionTargetValue"]=array();#查詢欄位項目可用數值的其它條件欄位數值,爲陣列值。須搭配 $conf["otherConditionTargetName"] 一起使用#$conf["otherConditionTargetValue"]=array();#參考資料:#無.#備註:#無.*/public static function findUsableNumber($conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#可用號碼的預設值,用int型態儲存.(int)$userableNumber=0;#函式說明:#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#必填參數:$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("dbAddress","dbAccount","selectedDataBaseName","checkDataTableName","conditionTargetName","startPoint","endPoint");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");#可省略參數:$conf["variableCheck"]["isexistMuti"]["variableType"]=array("string","string","string","string","string","string","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);unset($conf["variableCheck"]["isexistMuti"]);#如果 $checkResult["status"] 等於 "false"if($checkResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果 $checkResult["passed"] 等於 "false"if($checkResult["passed"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#從$startPoint開始到$endPoint結束,供執行 $endPoint-$startPoint 次。for($i=$conf["startPoint"];$i<=$conf["endPoint"];$i++){#更新可用號碼$userableNumber=$i;#查詢目標號碼是否已存在#函式說明:#一次取得資料庫、表的資料#回傳結果:#$result["status"],執行結果"true"為成功;"false"為執行失敗。#$result["error"],錯誤訊息陣列。#$result["dataContent"],爲資料的內容。#$result["dataContent"][$conf["WhereColumnName"][$i]][$dataSetNum]#$dataSetNum 爲第$dataSetNum+1筆資料#$conf["WhereColumnName"][$i] 爲第 $i+1 個欄位的名稱#$result["dataCount"],爲取得的資料筆數。#$result["sql"],執行的sql字串.#必填參數:$conf["db"]["fastGetDbData"]["dbAddress"]=$conf["dbAddress"];#爲dbServer的位置。$conf["db"]["fastGetDbData"]["dbAccount"]=$conf["dbAccount"];#爲登入dbServer的帳號。$conf["db"]["fastGetDbData"]["dbName"]=$conf["selectedDataBaseName"];#爲要存取的資料庫名稱$conf["db"]["fastGetDbData"]["tableName"]=$conf["checkDataTableName"];#爲要存取的資料表名稱$conf["db"]["fastGetDbData"]["columnYouWant"]=array($conf["conditionTargetName"]);#你想要的欄位!#可省略參數:#如果 $conf["dbPassword"] 有設置if(isset($conf["dbPassword"])){$conf["db"]["fastGetDbData"]["dbPassword"]=$conf["dbPassword"];#爲要存取dbServer的密碼}#if end#如果 $conf["dbPort"] 有設置if(isset($conf["dbPort"])){$conf["db"]["fastGetDbData"]["dbPort"]=$conf["dbPort"];#爲要存取dbServer的port}#if end#要檢查可用數字的欄位為塞選的欄位$conf["db"]["fastGetDbData"]["WhereColumnName"][]=$conf["conditionTargetName"];#如果 $conf["otherConditionTargetName"] 有設置if(isset($conf["otherConditionTargetName"])){#針對 $conf["otherConditionTargetName"] 的每個元素foreach($conf["otherConditionTargetName"] as $columnName){$conf["db"]["fastGetDbData"]["WhereColumnName"][]=$columnName;#用於判斷語句的欄位項目陣列.}#foreach end}#if end#要檢查可用數字的欄位數值為塞選的欄位對應數值$conf["db"]["fastGetDbData"]["WhereColumnValue"][]=$userableNumber;#如果 $conf["otherConditionTargetValue"] 有設置if(isset($conf["otherConditionTargetValue"])){#針對每個 $conf["otherConditionTargetValue"] 元素foreach($conf["otherConditionTargetValue"] as $columnValue){$conf["db"]["fastGetDbData"]["WhereColumnValue"][]=$columnValue;#用於判斷語句的欄位數值陣列,若與LIKE搭配,則可以在關鍵自字串的左右名加上「%」符號,這樣就可以搜尋具有該字串的內容.}#foreach end}#if end#$conf["db"]["fastGetDbData"]["WhereColumnCombine"]=array("");#用於判斷語句當中需要()起來的判斷式,須爲陣列值,"s"代表「(」,"e"代表「)」 ,若無則須設爲""。#$conf["db"]["fastGetDbData"]["WhereColumnOperator"]=array("");#用於判斷語句的比較符號陣列,可以用的符號有「"="、">"、"<"、"LIKE"、"NOT LIKE"」,預設都爲「=」。#$conf["db"]["fastGetDbData"]["WhereColumnAndOr"]=array("");#用於判斷語句條件之間成立的條件是AND還是OR,須爲陣列值。其數量應爲要判斷的欄位數量減一。#$conf["db"]["fastGetDbData"]["orderItem"]="";#爲排序的項目依據,若要用隨機抽樣,可以用"rand()",可省略。#$conf["db"]["fastGetDbData"]["ascORdesc"]="";#爲要低增還是遞減排序,asc爲遞增;desc爲遞減。#$conf["db"]["fastGetDbData"]["numberStart"]="0";#為從第幾筆開始讀取,預設為0,代筆第一筆。#$conf["db"]["fastGetDbData"]["numLimit"]="30";#為要取幾筆資料,可以省略,省略則表示不限制數目。#$conf["db"]["fastGetDbData"]["groupBy"]=array("");#爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆)。$db["fastGetDbData"]=db::fastGetDbData($conf["db"]["fastGetDbData"]);unset($conf["db"]["fastGetDbData"]);#如果取得資料失敗if($db["fastGetDbData"]["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$db["fastGetDbData"];#回傳結果return $result;}#if end#如果該條件下沒有符合的資料if($db["fastGetDbData"]["dataCount"]==0){#取得可用的編號$result["usableNumber"]=$i;#設置有找到符合的數字$result["founded"]="true";#跳出迴圈break;}#if end#反之該條件下有符合的資料else{#設置沒有找到符合的數字$result["founded"]="false";}#else end}#for end#執行到這邊代表執行正常$result["status"]="true";#回傳結果return $result;}#function findUsableNumber end/*#函式說明:#取得特定的資料表資料#回傳的參數:#$result["status"],執行結果"true"為成功;"false"為執行失敗。#$result["error"],錯誤訊息陣列。#$result["function"],當前執行的函數名稱#$result["sql"],執行的sql語法#$result["sqlQueryResult"]#爲資料連線處理完畢之後的結果,需要 sendQueryDataToVariabele 涵式來解析。#$result["dataCount"]#符合條件的資料筆數#必填參數:#$conf["dbAddress"],字串,爲mysql-Server的位置。$conf["dbAddress"]=$dbAddress;#$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號。$conf["dbAccount"]=$dbAccount;#$conf["selectedDataBaseName"],字串,要選取的資料庫名稱。$conf["selectedDataBaseName"]=$dbName;#$conf["selectedDataTableName"],字串,爲欲選擇的資料表名稱。$conf["selectedDataTableName"]="";#可省略參數:#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼.#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,可省略,若省略則代表使用預設的3306 port.#$conf["dbPort"]="";#$conf["WhereColumnCombine"],字串陣列,用於判斷語句當中需要()起來的判斷式,須爲陣列值,"s"代表「(」,"e"代表「)」 ,若無則須設爲""。#$conf["WhereColumnCombine"]=array("");#$conf["WhereColumnName"],字串陣列,用於判斷語句的欄位項目陣列。#$conf["WhereColumnName"]=array("");#$conf["WhereColumnOperator"],字串陣列,用於判斷語句的比較符號陣列,可以用的符號有「"="、">"、"<"、"LIKE"、"NOT LIKE"」,預設都爲「=」。#$conf["WhereColumnOperator"]=array("");#$conf["WhereColumnValue"],字串陣列,用於判斷語句的欄位數值陣列,若與LIKE搭配,則可以在關鍵自字串的左右名加上「%」符號,這樣就可以搜尋具有該字串的內容。#$conf["WhereColumnValue"]=array("");#$conf["WhereColumnAndOr"],字串陣列,用於判斷語句條件之間成立的條件是AND還是OR,須爲陣列值。其數量應爲要判斷的欄位數量減一。#$conf["WhereColumnAndOr"]=array("");#$conf["whereIn"],二維字串陣列,為每個in語句的內容,特定欄位數值等於陣列元素之一。array(array("colName",array("a","b","c")));代表欄位colName的值為a,b,c三者之一.#$conf["whereIn"]=array(array("colName",array("a","b","c")));#$conf["whereNotIn"],二維字串陣列,為每個not in語句的內容,array(array("colName",array("a","b","c")));代表欄位colName的值不為a,b,c三者之一.#$conf["whereNotIn"]=array(array("colName",array("a","b","c")));#$conf["orderItem"],字串,爲排序的項目依據,若要用隨機抽樣,可以用"rand()",可省略。#$conf["orderItem"]="";#$conf["ascORdesc"],字串,爲要低增還是遞減排序,asc爲遞增;desc爲遞減。#$conf["ascORdesc"]="";#$conf["numberStart"],字串,為從第幾筆開始讀取,預設為0,代筆第一筆。#$conf["numberStart"]="0";#$conf["number"],字串,為要取幾筆資料,可以省略,省略則表示不限制數目。#$conf["number"]="30"#$conf["groupBy"],字串陣列,爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆)。#$conf["groupBy"]=array("");#參考資料:#http://stackoverflow.com/questions/5021243/mysql-query-multiple-group-by#備註:#無.*/public static function dataTableSelect(&$conf){#初始化要回傳的變數$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#$result["argu"],字串陣列,目前輸入的參數名稱陣列.#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.#$result["notNeedVar"],字串陣列,多餘的參數名稱.#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("dbAddress","dbAccount","selectedDataBaseName","selectedDataTableName");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string","string");#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可省略參數:#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。#$conf["canBeEmptyString"]="false";#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("dbPassword","dbPort","WhereColumnCombine","WhereColumnName","WhereColumnOperator","WhereColumnValue","WhereColumnAndOr","orderItem","ascORdesc","numberStart","number","groupBy","whereIn","whereNotIn");#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","array","array","array","array","array","string","string","string","string","array","array","array");#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null,null,null,null,null,null,null,null,"0",null,null,null,null);#$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array("WhereColumnName","WhereColumnValue");$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array("WhereColumnValue","WhereColumnOperator");#參考資料:#array_keys=>http://php.net/manual/en/function.array-keys.php$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果檢查失敗if($checkResult["status"]==="false"){#設置執行失敗的訊息$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查不通過if($checkResult["passed"]==="false"){#設置執行失敗的訊息$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#連線到資料庫#函式說明:#連線到資料庫,結果會回傳一個陣列#$result["status"],若連線成功則爲"true",連線失敗則爲"false".#$result["connectInformation"],爲回傳的mysql連線資訊.#$result["error"],錯誤訊息.#$result["function"],當前執行的函數名稱.#必填參數:$conf["db"]["dbConnect"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["dbConnect"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號#$conf["dbName"],字串,爲要連的資料庫名稱$conf["db"]["dbConnect"]["dbName"]=$conf["selectedDataBaseName"];#可省略參數:#如果 $conf["dbPassword"] 有設定if(isset($conf["dbPassword"])){$conf["db"]["dbConnect"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果 $conf["dbPort"] 有設定if(isset($conf["dbPort"])){$conf["db"]["dbConnect"]["dbPort"]=$conf["dbPort"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end$con=db::dbConnect($conf["db"]["dbConnect"]);unset($conf["db"]);#如果連線到資料庫失敗if($con["status"]==="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$con;#回傳結果return $result;}#if end#var_dump($con);#取得mysqli物件$mysqli=$con["connectInformation"];#如果 $conf["WhereColumnAndOr"] 沒有設定,但是有指定判斷條件的欄位if(!isset($conf["WhereColumnAndOr"]) && isset($conf["WhereColumnName"])){#則$conf["WhereColumnAndOr"]爲有 count($conf["WhereColumnName"])-1 個 "AND" 的字串陣列for($i=0;$i<(count($conf["WhereColumnName"])-1);$i++){$conf["WhereColumnAndOr"][$i]="AND";}#for end}#if end#如果 $conf["WhereColumnCombine"] 沒有設定,但是有指定判斷條件的欄位if(!isset($conf["WhereColumnCombine"]) && isset($conf["WhereColumnName"])){#則 $conf["WhereColumnCombine"] 爲有 count($conf["WhereColumnName"]) 個 "" 的字串陣列for($i=0;$i<count($conf["WhereColumnName"]);$i++){$conf["WhereColumnCombine"][$i]="";}#for end}#if end#如果 $conf["WhereColumnOperator"] 沒有設定,但是有設定判斷條件的欄位if(!isset($conf["WhereColumnOperator"]) && isset($conf["WhereColumnName"])){#則 $conf["WhereColumnOperator"] 爲有 count($conf["WhereColumnName"]) 個 "" 的字串陣列for($i=0;$i<count($conf["WhereColumnName"]);$i++){$conf["WhereColumnOperator"][$i]="=";}#for end}#if end#如果 $conf"ascORdesc"] 沒有設定,則不指定遞增或遞減排序if(!isset($conf["ascORdesc"])){#排序變數爲空字串$conf["ascORdesc"]="";}#if end#如果 $conf["number"] 沒設定,則不限定要取幾筆資料if(!isset($conf["number"])){#限定筆數爲空字串$queryStringLimit = "";}#if end#如果 $conf["number"] 不爲空,則限定要取出幾筆else{#如果 $conf["numberStart"] 有設定if(isset($conf["numberStart"])){$queryStringLimit = " LIMIT ".$conf["numberStart"]." , ".$conf["number"]." ";}#if end#反之 $conf["numberStart"] 沒有設定else{$queryStringLimit = " LIMIT 0 , ".$conf["number"]." ";}#else end}#else end#如果存在 $conf["orderItem"]if(isset($conf["orderItem"])){#如果排序的依據是 rand() 或 RAND()if($conf["orderItem"] == "rand()" || $conf["orderItem"] == "RAND()"){# 依 $order 為排序依據,進行 隨機 排序$queryStringOrder = " ORDER BY ".$conf["orderItem"]." ".$conf["ascORdesc"]." ";}#if end#反之 $order 為排序依據else{#爲 acs 或 desc, 依 $order 為排序依據,進行 asc OR desc 排序$queryStringOrder = " ORDER BY ".$conf["orderItem"]." ".$conf["ascORdesc"]." ";}#else end}#if end#反之 不存在else{#預設為不指定$queryStringOrder="";}#else end#如果有設定 $conf["WhereColumnName"] 參數if(isset($conf["WhereColumnName"])){#條件判斷的起始語句$conf["whereCondition"]="WHERE ";#有幾個判斷用的欄位就執行幾次for($i=0;$i<count($conf["WhereColumnName"]);$i++){#如果是左掛號if($conf["WhereColumnCombine"][$i]=="("){$conf["whereCondition"]=$conf["whereCondition"]." ".$conf["WhereColumnCombine"][$i]." ";}#if end#如果欄位數值不是字串,也不是NULLif(gettype($conf["WhereColumnValue"][$i])!=="string" && $conf["WhereColumnValue"][$i]!==NULL){#設置執行失敗$result["status"]="false";#設置執行錯誤$result["error"][]="WhereColumnValue 參數須為陣列字串";#回傳結果return $result;}#if end#結合各個條件語句$conf["whereCondition"]=$conf["whereCondition"]." `".$conf["WhereColumnName"][$i]."` ";$conf["whereCondition"]=$conf["whereCondition"]." ".$conf["WhereColumnOperator"][$i]." ";$conf["whereCondition"]=$conf["whereCondition"]." '".mysqli_real_escape_string($mysqli,$conf["WhereColumnValue"][$i])."' ";#如果右掛號if($conf["WhereColumnCombine"][$i]==")"){$conf["whereCondition"]=$conf["whereCondition"]." ".$conf["WhereColumnCombine"][$i]." ";}#if end#如果不是最後一筆項目,就放置AND or ORif($i<count($conf["WhereColumnName"])-1){$conf["whereCondition"]=$conf["whereCondition"]." ".$conf["WhereColumnAndOr"][$i]." ";}#if end}#for end}#if end#反之,套件變數設爲空字串else{$conf["whereCondition"]="";}#else end#初始化 where in 語句$whereIn=" ";#如果 $conf["whereIn"] 存在if(isset($conf["whereIn"])){#如果 $conf["whereCondition"] 等於 空if($conf["whereCondition"]!==""){#先加上串接的 AND$whereIn=$whereIn."AND ";}#if end#反之為第一個where條件else{#設置where開頭$whereIn=$whereIn."where ";}#else end#針對每個要用 in 條件判斷的語句for($i=0;$i<count($conf["whereIn"]);$i++){#取得要判斷的欄位$col=$conf["whereIn"][$i][0];#加上 in 的開頭語句$whereIn=$whereIn."`".$col."` in(";#針對每個 in 的值for($j=0;$j<count($conf["whereIn"][$i][1]);$j++){#串接條件$whereIn=$whereIn."'".mysqli_real_escape_string($mysqli,$conf["whereIn"][$i][1][$j])."'";#如果不是最後一個條件if($j!==count($conf["whereIn"][$i][1])-1){#後面還有條件$whereIn=$whereIn.",";}#if end#反之是最後一個條件else{#後面沒有條件$whereIn=$whereIn.")";}#else end}#for end}#for end#如果沒有in的條件if($whereIn===" AND `".$col."` in(" OR $whereIn===" AND " OR $whereIn===" " OR $whereIn===" where "){#設為 ""$whereIn="";}#if end}#if end#串接 where in 語句$conf["whereCondition"]=$conf["whereCondition"].$whereIn;#初始化 where not in 語句$whereNotIn=" ";#如果 $conf["whereNotIn"] 存在if(isset($conf["whereNotIn"])){#如果 $conf["whereCondition"] 等於 空if(str_replace(" ","",$conf["whereCondition"])!==""){#先加上串接的 AND$whereNotIn=$whereNotIn."AND ";}#if end#反之為第一個where條件else{#設置where開頭$whereNotIn=$whereNotIn."where ";}#else end#針對每個要用 in 條件判斷的語句for($i=0;$i<count($conf["whereNotIn"]);$i++){#取得要判斷的欄位$col=$conf["whereNotIn"][$i][0];#加上 in 的開頭語句$whereNotIn=$whereNotIn."`".$col."` not in(";#針對每個 in 的值for($j=0;$j<count($conf["whereNotIn"][$i][1]);$j++){#串接條件$whereNotIn=$whereNotIn."'".mysqli_real_escape_string($mysqli,$conf["whereNotIn"][$i][1][$j])."'";#如果不是最後一個條件if($j!==count($conf["whereNotIn"][$i][1])-1){#後面還有條件$whereNotIn=$whereNotIn.",";}#if end#反之是最後一個條件else{#後面沒有條件$whereNotIn=$whereNotIn.")";}#else end}#for end}#for end#如果沒有in的條件if($whereNotIn===" AND `".$col."` not in(" OR $whereNotIn===" AND " OR $whereNotIn===" " OR $whereNotIn===" where "){#設為 ""$whereNotIn="";}#if end}#if end#串接 where not in 語句$conf["whereCondition"]=$conf["whereCondition"].$whereNotIn;#如果 $conf["groupBy"] 有指定if(isset($conf["groupBy"])){#初始化分類語句的字串$groupByQueryStr="GROUP BY ";#設定要以哪些欄位爲分組的依據for($i=0;$i<count($conf["groupBy"]);$i++){#如果不是最後一筆if($i!=count($conf["groupBy"])-1){#語法裡面含有 , 代表還有其他欄位$groupByQueryStr=$groupByQueryStr." `".$conf["groupBy"][$i]."` , ";}#if end#反之是最後一筆資料else{#語法結尾沒有 , 代表沒有其他欄位$groupByQueryStr=$groupByQueryStr." `".$conf["groupBy"][$i]."` ";}#else end}#for end#取得分組的語法$conf["groupBy"]=$groupByQueryStr;}#if end#如果 $conf["groupBy"] 沒有設定else{#則將其設爲空值$conf["groupBy"]="";}#else end#要執行的sql語法$result["sql"]=$queryStringFinal="SELECT * FROM `".$conf["selectedDataBaseName"]."`.`".$conf["selectedDataTableName"]."` ".$conf["whereCondition"]." ".$conf["groupBy"]." ".$queryStringOrder.$queryStringLimit;#執行 SQL 語法#函式說明:#執行mysql指令#回傳結果::#$result["status"],"true"為執行成功;"false"為執行失敗。#$result["error"],錯誤訊息的陣列#$result["function"],當前執行的涵式#$result["queryResource"],mysql查詢後的resource資源,用於給mysql解析的資源變數。#$result["queryString"],mysql查詢的語言#查詢號的解果,需要解析。#必填參數:$conf["db::execMysqlQuery"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db::execMysqlQuery"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db::execMysqlQuery"]["dbSql"]=$queryStringFinal;#要執行sql語法#可省略參數:#如果 $conf["dbPassword"] 有設定if(isset($conf["dbPassword"])){$conf["db::execMysqlQuery"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果 $conf["dbPort"] 有設定if(isset($conf["dbPort"])){$conf["db::execMysqlQuery"]["dbPort"]=$conf["dbPort"];#爲連線到mysql-Server時要使用的port,可省略,若省略則代表預設的3306.}#if end#$conf["dbLink"],物件,mysqli物件,由mysqli_connect()回傳的物件內容,若為數值則改用賬號密碼等資訊進行連線,反之則沿用連線物件.$conf["db::execMysqlQuery"]["dbLink"]=$mysqli;$execMysqlQuery=db::execMysqlQuery($conf["db::execMysqlQuery"]);unset($conf["db::execMysqlQuery"]);#如果執行錯誤if($execMysqlQuery["status"]=="false"){#設置執行錯誤的識別$result["status"]="false";#設置錯誤訊息$result["error"]=$execMysqlQuery;#回傳錯誤訊息return $result;}#if end#取得查詢後的結果$result["sqlQueryResult"]=$execMysqlQuery["queryResource"];#取得符合條件的資料筆數$result["dataCount"]=mysqli_num_rows($execMysqlQuery["queryResource"]);#執行到這邊代表執行成功$result["status"]="true";#回傳查詢的結果;return $result;}#end dataTableSelect/*#函式說明:#解析 dataTableSelect($conf) 後的結果,亦即將執行sql語法後所得到的結果解析放進變數裏面#回傳結果:#$result["status"],執行結果"true"為成功;"false"為失敗#$result["error"],錯誤訊息#$result["function"],儲存當前函數名稱#$result["dataColumnName"],為資料欄位的名稱陣列.#$result["dataColumnName"][$i]代表第一個欄位名稱.#$result["dataContent"],爲資料的內容陣列,第1維度的key為$conf["tableValueName"][$i],亦即第 $i+1 個欄位的名稱,若該欄位不存在,則其value為空字串;第2維度的key為第$i+1筆資料的索引.#$result["dataCount"],爲取得的資料筆數.#必填參數:#$conf["sqlQueryResult"],object,爲執行sql語法所獲得的查詢結果。$conf["sqlQueryResult"]="";#$conf["tableValueName"],字串陣列,爲該資料表列項目的每一項名稱,須爲陣列值,若為「array("*")」則代表所有欄位.$conf["tableValueName"]=array();#可省略參數:#$conf["dbAddress"],字串,爲mysql-Server的位置,目前沒有用途.#$conf["dbAddress"]=$dbAddress;#$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號,目前沒有用途.#$conf["dbAccount"]=$dbAccount;#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼,目前沒有用途.#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,可省略,若省略則代表使用預設的3306 port,目前沒有用途.#$conf["dbPort"]="";#$conf["valueName"],字串陣列,爲該資料表列項目的每一項所要對應的變數名稱,預設為欄位的名稱($conf["tableValueName"]).#$conf["valueName"]=$conf["tableValueName"];#參考資料:#http://www.w3school.com.cn/php/func_mysql_fetch_array.asp => 解析取得的資料表欄位時,能夠選擇回傳含有欄位名稱與數字代表的key.#備註:#無.*/public static function sendQueryDataToVariabele(&$conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#$result["argu"],字串陣列,目前輸入的參數名稱陣列.#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.#$result["notNeedVar"],字串陣列,多餘的參數名稱.#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("sqlQueryResult","tableValueName");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("object","array");#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可省略參數:#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。#$conf["canBeEmptyString"]="false";#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("dbPassword","dbPort","valueName","dbAddress","dbAccount");#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","array","string","string");#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null,"\$conf[\"tableValueName\"]",null,null);#$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array("valueName","tableValueName");#參考資料:#array_keys=>http://php.net/manual/en/function.array-keys.php$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置執行失敗的訊息$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置執行失敗的訊息$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#給予初始值表示從0筆開始統計$dataSetNum=0;#取得資料表的欄位數量$columnCounts=count($conf["tableValueName"]);#初始化識別是否要匯出全部欄位的變數$exportAll="false";#初始化儲存取得的欄位名稱陣列$result["dataColumnName"]=array();#如果剛好只有一個元素if($columnCounts==1){#如果第一個元素為 "*"if($conf["tableValueName"][0]=="*"){#則代表要全部欄位均匯出.$exportAll="true";#初始化計數的變數$dataSetNum=0;#將讀取到的資料一次只讀取一列while($row = mysqli_fetch_array($conf["sqlQueryResult"])){#筆數加1$dataSetNum++;#針對每個欄位foreach($row as $columnName => $columnValue){#取得欄位的內容並用欄位名稱作為key$result["dataContent"][$columnName][]=$columnValue;#如果 $dataSetNum 等於 1#亦即第一筆資料if($dataSetNum==1 && gettype($columnName)!="integer"){#取得每個欄位名稱$result["dataColumnName"][]=$columnName;}#if end}#foreach end}#while end#將資料筆數放進 $result["dataCount"] 裏面$result["dataCount"]=$dataSetNum;}#if end}#if end#如果 $exportAll 等於 "fasle" 則代表要根據需求匯出指定的欄位.if($exportAll=="false"){#如果 $conf["valueName"] 沒有設置if(!isset($conf["valueName"])){#預設為 $conf["tableValueName"]$conf["valueName"]=$conf["tableValueName"];}#if end#取得每個欄位名稱$result["dataColumnName"]=$conf["tableValueName"];#將讀取到的資料一次只讀取一列while($row = mysqli_fetch_array($conf["sqlQueryResult"])){#$i筆項列資料,則運行$i次。for($i=0;$i<$columnCounts;$i++){#如果欄位不存在if(!isset($row[$conf["tableValueName"][$i]])){#將解析的資料內容用空字串替代放進$result["dataContent"]變數裏面$result["dataContent"][$conf["valueName"][$i]][$dataSetNum] = "";}#if end#將解析的資料內容結果放進$result["dataContent"]變數裏面$result["dataContent"][$conf["valueName"][$i]][$dataSetNum] = $row[$conf["tableValueName"][$i]];}#for end#資料筆數編號加1$dataSetNum++;}#while end#將資料筆數放進 $result["dataCount"] 裏面$result["dataCount"]=$dataSetNum;}#if end#執行道這邊代表執行成功$result["status"]="true";#將取得的結果回傳return $result;}#function sendQueryDataToVariabele end/*#函式說明:#一次取得資料庫、表的資料#回傳結果:#$result["status"],執行結果"true"為成功;"false"為執行失敗。#$result["error"],錯誤訊息陣列。#$result["function"],當前執行的漢書名稱.#$result["argu"],使用的參數.#$result["dataColumnName"],抓取的資料欄位名稱陣列.#$result["dataColumnName"][$i]代表第$i+1個欄位名稱#$result["dataContent"],爲資料的內容。#$result["dataContent"][$conf["WhereColumnName"][$i]][$dataSetNum]#$dataSetNum 爲第$dataSetNum+1筆資料#$conf["WhereColumnName"][$i] 爲第 $i+1 個欄位的名稱#$result["dataCount"],爲取得的資料筆數。#$result["sql"],執行的sql字串.#必填參數:#$conf["dbAddress"],字串,爲dbServer的位置。$conf["dbAddress"]=$dbAddress;#$conf["dbAccount"],字串,爲登入dbServer的帳號。$conf["dbAccount"]=$dbAccount;#$conf["dbName"],字串,爲要存取的資料庫名稱$conf["dbName"]=$dbName;#$conf["tableName"],字串,爲要存取的資料表名稱$conf["tableName"]="";#$conf["columnYouWant"],字串陣列,你想要的欄位!,若設為「array("*")」則代表全部欄位.$conf["columnYouWant"]=array();#可省略參數:#$conf["dbPassword"],字串,爲要存取dbServer的密碼.#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,可省略,若省略則代表使用預設的3306 port.#$conf["dbPort"]="";#$conf["WhereColumnName"],字串陣列,用於判斷語句的欄位項目陣列。#$conf["WhereColumnName"]=array("");#$conf["WhereColumnValue"],字串陣列,用於判斷語句的欄位數值陣列,若與LIKE搭配,則可以在關鍵自字串的左右名加上「%」符號,這樣就可以搜尋具有該字串的內容。#$conf["WhereColumnValue"]=array("");#$conf["WhereColumnCombine"],字串陣列,用於判斷語句當中需要()起來的判斷式,須爲陣列值,"s"代表「(」,"e"代表「)」 ,若無則須設爲""。#$conf["WhereColumnCombine"]=array("");#$conf["WhereColumnOperator"],字串陣列,用於判斷語句的比較符號陣列,可以用的符號有「"="、"!="、">"、"<"、"LIKE"、"NOT LIKE"」,預設都爲「=」。#$conf["WhereColumnOperator"]=array("");#$conf["WhereColumnAndOr"],字串陣列,用於判斷語句條件之間成立的條件是AND還是OR,須爲陣列值。其數量應爲要判斷的欄位數量減一。#$conf["WhereColumnAndOr"]=array("");#$conf["whereIn"],二維字串陣列,為每個in語句的內容,特定欄位數值等於陣列元素之一。array(array("colName",array("a","b","c")));代表欄位colName的值為a,b,c三者之一.#$conf["whereIn"]=array(array("colName",array("a","b","c")));#$conf["whereNotIn"],二維字串陣列,為每個not in語句的內容,array(array("colName",array("a","b","c")));代表欄位colName的值不為a,b,c三者之一.#$conf["whereNotIn"]=array(array("colName",array("a","b","c")));#$conf["orderItem"],字串,爲排序的項目依據,若要用隨機抽樣,可以用"rand()",可省略。#$conf["orderItem"]="";#$conf["ascORdesc"],字串,爲要低增還是遞減排序,asc爲遞增;desc爲遞減。#$conf["ascORdesc"]="";#$conf["numberStart"],字串,為從第幾筆開始讀取,預設為0,代筆第一筆。#$conf["numberStart"]="0";#$conf["numLimit"],字串,為要取幾筆資料,可以省略,省略則表示不限制數目。#$conf["numLimit"]="30";#$conf["groupBy"],字串陣列,爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆)。#$conf["groupBy"]=array("");#參考資料:#無.#備註:#無.*/public static function fastGetDbData(&$conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#取得使用的$result["argu"]=$conf;#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#$result["argu"],字串陣列,目前輸入的參數名稱陣列.#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.#$result["notNeedVar"],字串陣列,多餘的參數名稱.#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("dbAddress","dbAccount","dbName","tableName","columnYouWant");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string","string","array");#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可省略參數:#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。#$conf["canBeEmptyString"]="false";#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("dbPassword","dbPort","WhereColumnName","WhereColumnValue","WhereColumnCombine","WhereColumnOperator","WhereColumnAndOr","orderItem","ascORdesc","numberStart","numLimit","groupBy","whereIn","whereNotIn");#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","array","array","array","array","array","string","string","string","string","array","array","array");#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null,null,null,null,null,null,null,null,"0",null,null,null,null);#$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array("WhereColumnName","WhereColumnValue");$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array("WhereColumnValue","WhereColumnOperator");#參考資料:#array_keys=>http://php.net/manual/en/function.array-keys.php$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置執行失敗的訊息$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置執行失敗的訊息$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#初始化要檢查的欄位$colToCheck=array();#如果有指定要的欄位if($conf["columnYouWant"]!==array("*")){#針對每個欄位foreach($conf["columnYouWant"] as $col){#取得欄位名稱$colToCheck[]=$col;}#foreach end}#if end#如果有設置if(isset($conf["WhereColumnName"])){#針對每個欄位foreach($conf["WhereColumnName"] as $col){#取得欄位名稱$colToCheck[]=$col;}#foreach end}#if end#如果有設置 $conf["whereIn"]if(isset($conf["whereIn"])){#針對每個 where in 條件for($i=0;$i<count($conf["whereIn"]);$i++){#取得欄位名稱$colToCheck[]=$conf["whereIn"][$i][0];}#for end}#if end#如果要檢查的欄位不是空陣列if($colToCheck!==array()){#檢查需要判斷資料表欄位是否存在#函式說明:#檢查資料表的欄位是否存在#回傳結果::#設置執行錯誤的識別#$result["function"],當前執行的函數名稱.#$result["status"],"true"代表執行成功;"false"代表執行失敗.#$result["error"],錯誤訊息.#$result["warning"],警告訊息陣列#$result["passed"],是否通過檢查,"true"代表通過;"false"代表不通過.#其餘的結果代表參數不正確#必填參數:#$conf["dbAddr"],字串,爲mysql-Server的位置$conf["db::checkTableColExists"]["dbAddr"]=$conf["dbAddress"];#$conf["dbAcct"],字串,爲用於連入mysql-Server時要使用的帳號$conf["db::checkTableColExists"]["dbAcct"]=$conf["dbAccount"];#$conf["dbName"],字串,爲指定的資料庫名稱$conf["db::checkTableColExists"]["dbName"]=$conf["dbName"];#$conf["dtName"],字串,為要檢查是否存在的資料表名稱$conf["db::checkTableColExists"]["dtName"]=$conf["tableName"];#$conf["col"],字串陣列,要檢查的欄位名稱.$conf["db::checkTableColExists"]["col"]=array_unique($colToCheck);#可省略參數#如果有設置 $conf["dbPassword"]if(isset($conf["dbPassword"])){#$conf["dbPass"],爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼$conf["db::checkTableColExists"]["dbPass"]=$conf["dbPassword"];}#if end#如果有設置 $conf["dbPort"]if(isset($conf["dbPort"])){#$conf["dbPort"],爲連線到mysql-Server時要使用的port,可省略,若省略則代表預設的port 3306$conf["db::checkTableColExists"]["dbPort"]=$conf["dbPort"];}#if end$checkTableColExists=db::checkTableColExists($conf["db::checkTableColExists"]);unset($conf["db::checkTableColExists"]);#如果檢查失敗if($checkTableColExists["status"]==="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$checkTableColExists;#回傳結果return $result;}#if end#如果檢查不通過if($checkTableColExists["passed"]==="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$checkTableColExists;#回傳結果return $result;}#if end}#if end#函式說明:#dataTableSelectCustom的改良版#回傳的參數:#$result["status"],執行結果"true"為成功;"false"為執行失敗。#$result["error"],錯誤訊息陣列。#$result["sql"],執行的sql語法。#$result["sqlQueryResult"]#爲資料連線處理完畢之後的結果,需要 sendQueryDataToVariabele 涵式來解析。#$result["connectInformation"]#連結到資料庫的資訊。#$result["dataCount"]#符合條件的資料筆數#必填參數:$conf["db"]["dataTableSelectCustomV2"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置。$conf["db"]["dataTableSelectCustomV2"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號。$conf["db"]["dataTableSelectCustomV2"]["selectedDataBaseName"]=$conf["dbName"];#要選取的資料庫名稱 。$conf["db"]["dataTableSelectCustomV2"]["selectedDataTableName"]=$conf["tableName"];#爲欲選擇的資料表名稱。#可省略參數:#如果存在 $conf["dbPassword"]if(isset($conf["dbPassword"])){#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼。$conf["db"]["dataTableSelectCustomV2"]["dbPassword"]=$conf["dbPassword"];}#if end#如果存在 $conf["dbPort"]if(isset($conf["dbPort"])){#爲連線到mysql-Server時要使用的port,可省略,若省略則代表使用預設的3306 port$conf["db"]["dataTableSelectCustomV2"]["dbPort"]=$conf["dbPort"];}#if end#如果存在 $conf["WhereColumnCombine"]if(isset($conf["WhereColumnCombine"])){#用於判斷語句當中需要()起來的判斷式,須爲陣列值,"s"代表「(」,"e"代表「)」 ,若無則須設爲""。$conf["db"]["dataTableSelectCustomV2"]["WhereColumnCombine"]=$conf["WhereColumnCombine"];}#if end#如果 $conf["WhereColumnName"] 存在if(isset($conf["WhereColumnName"])){$conf["db"]["dataTableSelectCustomV2"]["WhereColumnName"]=$conf["WhereColumnName"];#用於判斷語句的欄位項目陣列。}#if end#如果存在 $conf["WhereColumnOperator"]if(isset($conf["WhereColumnOperator"])){#用於判斷語句的比較符號陣列,可以用的符號有「"="、">"、"<"、"LIKE"、"NOT LIKE"」,預設都爲「=」。$conf["db"]["dataTableSelectCustomV2"]["WhereColumnOperator"]=$conf["WhereColumnOperator"];}#if end#如果 $conf["WhereColumnValue"] 有設置if(isset($conf["WhereColumnValue"])){$conf["db"]["dataTableSelectCustomV2"]["WhereColumnValue"]=$conf["WhereColumnValue"];#用於判斷語句的欄位數值陣列,若與LIKE搭配,則可以在關鍵自字串的左右名加上「%」符號,這樣就可以搜尋具有該字串的內容。}#if end#如果 $conf["WhereColumnAndOr"] 存在if(isset($conf["WhereColumnAndOr"])){#用於判斷語句條件之間成立的條件是AND還是OR,須爲陣列值。其數量應爲要判斷的欄位數量減一。$conf["db"]["dataTableSelectCustomV2"]["WhereColumnAndOr"]=$conf["WhereColumnAndOr"];}#if end#如果 $conf["orderItem"] 存在if(isset($conf["orderItem"])){#爲排序的項目依據,若要用隨機抽樣,可以用"rand()",可省略。$conf["db"]["dataTableSelectCustomV2"]["orderItem"]=$conf["orderItem"];}#if end#如果 $conf["ascORdesc"] 存在if(isset($conf["ascORdesc"])){#爲要低增還是遞減排序,asc爲遞增;desc爲遞減。$conf["db"]["dataTableSelectCustomV2"]["ascORdesc"]=$conf["ascORdesc"];}#if end#如果 $conf["numberStart"] 存在if(isset($conf["numberStart"])){$conf["db"]["dataTableSelectCustomV2"]["numberStart"]=$conf["numberStart"];}#if end#如果 $conf["numLimit"] 存在if(isset($conf["numLimit"])){#為要取幾筆資料,可以省略,省略則表示不限制數目。$conf["db"]["dataTableSelectCustomV2"]["number"]=$conf["numLimit"];}#if end#如果 $conf["groupBy"] 存在if(isset($conf["groupBy"])){#爲要以那個欄爲作爲分羣的依據(該欄位相同的數值僅會取出一筆)。$conf["db"]["dataTableSelectCustomV2"]["groupBy"]=$conf["groupBy"];}#if end#如果 $conf["whereIn"] 存在if(isset($conf["whereIn"])){#where in 條件$conf["db"]["dataTableSelectCustomV2"]["whereIn"]=$conf["whereIn"];}#if end#如果 $conf["whereNotIn"] 存在if(isset($conf["whereNotIn"])){#where not in 條件$conf["db"]["dataTableSelectCustomV2"]["whereNotIn"]=$conf["whereNotIn"];}#if end$dataTableSelectCustomV2=db::dataTableSelect($conf["db"]["dataTableSelectCustomV2"]);unset($conf["db"]);#如果sql查詢失敗#如果 $dataTableSelectCustomV2["status"] 等於 "false"if($dataTableSelectCustomV2["status"]=="false"){#則設置執行錯誤的識別$result["status"]="false";#設置錯誤訊息$result["error"]=$dataTableSelectCustomV2;#回傳結果return $result;}#if end#取得執行的sql字串$result["sql"]=$dataTableSelectCustomV2["sql"];#解析 dataTableSelect($conf) 後的結果,亦即將執行sql語法後所得到的結果解析放進變數裏面#回傳結果:#$result["status"],執行結果"true"為成功;"false"為執行失敗。#$result["error"],錯誤訊息陣列。#$result["dataColumnName"],為資料欄位的名稱陣列.#$result["dataColumnName"][$i]代表第一個欄位名稱.#$result["dataContent"],爲資料的內容。#$result["dataContent"][$conf["tableValueName"][$i]][$dataSetNum],#$dataSetNum 爲第$dataSetNum+1筆資料#$conf["tableValueName"][$i] 爲第 $i+1 個欄位的名稱#$result["dataCount"],爲取得的資料筆數。#必填參數:$conf["db"]["sendQueryDataToVariabele"]["sqlQueryResult"]=$dataTableSelectCustomV2["sqlQueryResult"];#爲執行sql語法所獲得的查詢結果。$conf["db"]["sendQueryDataToVariabele"]["tableValueName"]=$conf["columnYouWant"];#$conf["tableValueName"]=array();#爲該資料表列項目的每一項名稱,須爲陣列值,若為「array("*")」則代表所有欄位.$conf["db"]["sendQueryDataToVariabele"]["valueName"]=$conf["columnYouWant"];#爲該資料表列項目的每一項所要對應的變數名稱,須爲陣列值。$conf["db"]["sendQueryDataToVariabele"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["sendQueryDataToVariabele"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號#可省略參數:#如果存在 $conf["dbPassword"]if(isset($conf["dbPassword"])){#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼。$conf["db"]["sendQueryDataToVariabele"]["dbPassword"]=$conf["dbPassword"];}#if end#如果存在 $conf["dbPort"]if(isset($conf["dbPort"])){#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表使用預設 port 3306$conf["db"]["sendQueryDataToVariabele"]["dbPort"]=$conf["dbPort"];}#if end$sendQueryDataToVariabele=db::sendQueryDataToVariabele($conf["db"]["sendQueryDataToVariabele"]);unset($conf["db"]);#如果 $sendQueryDataToVariabele["status"] 等於 "false"if($sendQueryDataToVariabele["status"]=="false"){#設置執行錯誤的識別$result["status"]="false";#設置錯誤訊息$result["error"]=$sendQueryDataToVariabele;#回傳結果return $result;}#if end#如果 $sendQueryDataToVariabele["dataContent"] 沒有設置if(!isset($sendQueryDataToVariabele["dataContent"])){#那就代表沒有找到符合的資料$sendQueryDataToVariabele["dataContent"]=NULL;#取得抓取到的資料內容$result["dataContent"]=$sendQueryDataToVariabele["dataContent"];}#if end#反之代表有資料else{#取得抓取到的資料內容$result["dataContent"]=$sendQueryDataToVariabele["dataContent"];#抓取欄位名稱$result["dataColumnName"]=$sendQueryDataToVariabele["dataColumnName"];}#else end#如果 $sendQueryDataToVariabele["dataCount"] 沒有設定if(!isset($sendQueryDataToVariabele["dataCount"])){#則代表沒有抓到符合的資料(int)$sendQueryDataToVariabele["dataCount"]=0;#取得資料筆數$result["dataCount"]=$sendQueryDataToVariabele["dataCount"];}#if end#反之代表有符合的資料else{#取得抓取到的資料筆數$result["dataCount"]=$sendQueryDataToVariabele["dataCount"];}#else end#執行到這邊表示執行成功$result["status"]="true";#回傳結果return $result;}#function fastGetDbData end/*#函式說明:#透過一個父資料表取得多個關聯子資料表的資料,並合併成一張表#回傳結果:#$result["status"],執行結果"true"為成功;"false"為執行失敗。#$result["error"],錯誤訊息陣列。#$reuslt["function"],當前執行的函數#$result["parentTable"]["dataContent"],爲合併了子資料表欄位的父資料表的內容。#$result["parentTable"]["dataContent"][$conf["WhereColumnName"][$i]][$dataSetNum]#$dataSetNum 爲第$dataSetNum+1筆資料#$conf["WhereColumnName"][$i] 爲第 $i+1 個欄位的名稱#$result["parentTable"]["dataCount"],爲取得的資料筆數。#必填參數:#$conf["dbAddress"],字串陣列,爲每個dbServer的位置。$conf["dbAddress"]=array($dbAddress);#$conf["dbAccount"],字串陣列,爲登入每個dbServer的帳號。$conf["dbAccount"]=array($dbAccount);#$conf["dbName"],字串陣列,爲每個要存取的資料庫名稱$conf["dbName"]=array($dbName);#$conf["tableName"],字串陣列,爲每個要存取的資料表名稱,$conf["tableName"][0]為父資料表.$conf["tableName"]=array("");#$conf["linkColumnName"]=array(array(""));#二維字串陣列,為可以從父表關連到其他資料表的欄位名稱.#$conf["linkColumnName"][$i]=array("parentColumnName","childColumnName"),為父資料表的"parentColumnName"欄位跟第$i+1個關聯資料表的"childColumnName"關聯.$conf["linkColumnName"]=array(array(""));#$conf["columnYouWant"]=array(array(""));#二維字串陣列,為每個資料表依序想要的欄位.$conf["columnYouWant"]=array(array(""));#二維字串陣列,為每個資料表依序想要的欄位.#可省略參數:#$conf["dbPassword"],字串陣列,爲要存取每個dbServer的密碼#$conf["dbPassword"]=array($dbPassword);#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,可省略,若省略則代表使用預設的3306 port.#$conf["dbPort"]="";#$conf["WhereColumnName"],字串陣列,用於判斷語句的欄位項目陣列。#$conf["WhereColumnName"]=array("");#$conf["WhereColumnValue"],字串陣列,用於判斷語句的欄位數值陣列,若與LIKE搭配,則可以在關鍵自字串的左右名加上「%」符號,這樣就可以搜尋具有該字串的內容。#$conf["WhereColumnValue"]=array("");#$conf["WhereColumnCombine"],字串陣列,用於判斷語句當中需要()起來的判斷式,須爲陣列值,"s"代表「(」,"e"代表「)」 ,若無則須設爲""。#$conf["WhereColumnCombine"]=array("");#$conf["WhereColumnOperator"],字串陣列,用於判斷語句的比較符號陣列,可以用的符號有「"="、">"、"<"、"LIKE"、"NOT LIKE"」,預設都爲「=」。#$conf["WhereColumnOperator"]=array("");#$conf["WhereColumnAndOr"],字串陣列,用於判斷語句條件之間成立的條件是AND還是OR,須爲陣列值。其數量應爲要判斷的欄位數量減一。#$conf["WhereColumnAndOr"]=array("");#$conf["whereIn"],二維字串陣列,為每個in語句的內容,特定欄位數值等於陣列元素之一。array(array("colName",array("a","b","c")));代表欄位colName的值為a,b,c三者之一.#$conf["whereIn"]=array(array("colName",array("a","b","c")));#$conf["whereNotIn"],二維字串陣列,為每個not in語句的內容,array(array("colName",array("a","b","c")));代表欄位colName的值不為a,b,c三者之一.#$conf["whereNotIn"]=array(array("colName",array("a","b","c")));#$conf["orderItem"],字串,排序的項目依據,若要用隨機抽樣,可以用"rand()",可省略。#$conf["orderItem"]="";#$conf["ascORdesc"],字串,要低增還是遞減排序,asc爲遞增;desc爲遞減。#$conf["ascORdesc"]="";#$conf["numberStart"],字串,從第幾筆開始讀取,預設為"0",代筆第一筆。#$conf["numberStart"]="0";#$conf["numLimit"],字串,要取幾筆資料,可以省略,省略則表示不限制數目。#$conf["numLimit"]="30";#$conf["groupBy"],字串陣列,爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆)。#$conf["groupBy"]=array();#參考資料:#無.#備註:#無.*/public static function fastGetMultiLinkedDbData(&$conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填參數:#$conf["variableCheck.checkArguments"]["varInput"],陣列變數,要檢查的陣列變數.$conf["variableCheck.checkArguments"]["varInput"]=&$conf;#$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("dbAddress","dbAccount","dbName","tableName","linkColumnName","columnYouWant");#$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("array","array","array","array","array","array");#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";#可省略參數:#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("dbPassword","WhereColumnName","WhereColumnValue","WhereColumnCombine","WhereColumnOperator","WhereColumnAndOr","orderItem","ascORdesc","numberStart","numLimit","groupBy","whereIn","whereNotIn");#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("array","array","array","array","array","array","string","string","string","string","array","array","array");#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array("");$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);unset($conf["variableCheck.checkArguments"]);#如果檢查出錯if($checkResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查出錯if($checkResult["passed"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#取得父表的資料#函式說明:#一次取得資料庫、表的資料#回傳結果:#$result["status"],執行結果"true"為成功;"false"為執行失敗。#$result["error"],錯誤訊息陣列。#$result["dataContent"],爲資料的內容。#$result["dataContent"][$conf["WhereColumnName"][$i]][$dataSetNum]#$dataSetNum 爲第$dataSetNum+1筆資料#$conf["WhereColumnName"][$i] 爲第 $i+1 個欄位的名稱#$result["dataCount"],爲取得的資料筆數。#必填參數:$conf["db"]["fastGetDbData"]["dbAddress"]=$conf["dbAddress"][0];#爲dbServer的位置。$conf["db"]["fastGetDbData"]["dbAccount"]=$conf["dbAccount"][0];#爲登入dbServer的帳號。$conf["db"]["fastGetDbData"]["dbName"]=$conf["dbName"][0];#爲要存取的資料庫名稱$conf["db"]["fastGetDbData"]["tableName"]=$conf["tableName"][0];#爲要存取的資料表名稱$conf["db"]["fastGetDbData"]["columnYouWant"]=$conf["columnYouWant"][0];#你想要的欄位!#可省略參數:#如果 $conf["dbPassword"][0] 有設置if(isset($conf["dbPassword"][0])){$conf["db"]["fastGetDbData"]["dbPassword"]=$conf["dbPassword"][0];#爲要存取dbServer的密碼}#if end#如果 $conf["WhereColumnName"] 有設置if(isset($conf["WhereColumnName"])){$conf["db"]["fastGetDbData"]["WhereColumnName"]=$conf["WhereColumnName"];#用於判斷語句的欄位項目陣列。}#if end#如果 $conf["WhereColumnValue"] 有設置if(isset($conf["WhereColumnValue"])){$conf["db"]["fastGetDbData"]["WhereColumnValue"]=$conf["WhereColumnValue"];#用於判斷語句的欄位數值陣列,若與LIKE搭配,則可以在關鍵自字串的左右名加上「%」符號,這樣就可以搜尋具有該字串的內容。}#if end#如果 $conf["WhereColumnCombine"] 有設置if(isset($conf["WhereColumnCombine"])){$conf["db"]["fastGetDbData"]["WhereColumnCombine"]=$conf["WhereColumnCombine"];#用於判斷語句當中需要()起來的判斷式,須爲陣列值,"s"代表「(」,"e"代表「)」 ,若無則須設爲""。}#if end#如果 $conf["WhereColumnOperator"] 有設置if(isset($conf["WhereColumnOperator"])){$conf["db"]["fastGetDbData"]["WhereColumnOperator"]=$conf["WhereColumnOperator"];#用於判斷語句的比較符號陣列,可以用的符號有「"="、">"、"<"、"LIKE"、"NOT LIKE"」,預設都爲「=」。}#if end#如果 $conf["WhereColumnAndOr"][$i] 有設置if(isset($conf["WhereColumnAndOr"])){$conf["db"]["fastGetDbData"]["WhereColumnAndOr"]=$conf["WhereColumnAndOr"];#用於判斷語句條件之間成立的條件是AND還是OR,須爲陣列值。其數量應爲要判斷的欄位數量減一。}#if end#如果 $conf["orderItem"] 有設置if(isset($conf["orderItem"])){$conf["db"]["fastGetDbData"]["orderItem"]=$conf["orderItem"];#爲排序的項目依據,若要用隨機抽樣,可以用"rand()",可省略。}#if end#如果 $conf["ascORdesc"] 有設置if(isset($conf["ascORdesc"])){$conf["db"]["fastGetDbData"]["ascORdesc"]=$conf["ascORdesc"];#爲要低增還是遞減排序,asc爲遞增;desc爲遞減。}#if end#如果 $conf["numberStart"] 有設置if(isset($conf["numberStart"])){$conf["db"]["fastGetDbData"]["numberStart"]=$conf["numberStart"];#為從第幾筆開始讀取,預設為0,代筆第一筆。}#if end#如果 $conf["numLimit"] 有設置if(isset($conf["numLimit"])){$conf["db"]["fastGetDbData"]["numLimit"]=$conf["numLimit"];#為要取幾筆資料,可以省略,省略則表示不限制數目。}#if end#如果 $conf["groupBy"] 有設置if(isset($conf["groupBy"])){$conf["db"]["fastGetDbData"]["groupBy"]=$conf["groupBy"];#爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆)。}#if end#如果 $conf["whereIn"] 存在if(isset($conf["whereIn"])){#where in 條件$conf["db"]["fastGetDbData"]["whereIn"]=$conf["whereIn"];}#if end#如果 $conf["whereNotIn"] 存在if(isset($conf["whereNotIn"])){#where not in 條件$conf["db"]["fastGetDbData"]["whereNotIn"]=$conf["whereNotIn"];}#if end#儲存到 $result["mainTable"] 陣列裡面$result["parentTable"]=db::fastGetDbData($conf["db"]["fastGetDbData"]);unset($conf["db"]["fastGetDbData"]);#如果 $result["mainTable"]["status"] 為 "false"if($result["parentTable"]["status"]=="false"){#取得錯誤訊息$result["error"]=$result["parentTable"]["error"];#設置執行結果為 "false"$result["status"]="false";#回傳結果return $result;}#if end#根據 $conf["linkColumnName"] 的數量for($i=0;$i<count($conf["linkColumnName"]);$i++){#取得父資料表的關聯欄位名稱$parentTableLinkColumnName=$conf["linkColumnName"][$i][0];#取得子資料表的關聯欄位名稱$childTableLinkColumnName=$conf["linkColumnName"][$i][1];#根據父資料表的資料筆數for($j=0;$j<$result["parentTable"]["dataCount"];$j++){#如果要連結的欄位不在 select 的欄位裡面if(!isset($result["parentTable"]["dataContent"][$parentTableLinkColumnName])){#設置執行錯誤$result["status"]="false";#設置執行錯誤內容$result["error"]="欄位 ".$parentTableLinkColumnName." 必須在參數 columnYouWant 裡面.";#回傳結果return $result;}#if end#父資料表第$j筆資料關聯欄位的數值內容$parentTableLinkColumnValue=$result["parentTable"]["dataContent"][$parentTableLinkColumnName][$j];#var_dump($parentTableLinkColumnValue);#根據第$j筆資料的父關聯欄位數值來尋找子關聯資料表的欄位數值#函式說明:#一次取得資料庫、表的資料#回傳結果:#$result["status"],執行結果"true"為成功;"false"為執行失敗。#$result["error"],錯誤訊息陣列。#$result["dataContent"],爲資料的內容。#$result["dataContent"][$conf["WhereColumnName"][$i]][$dataSetNum]#$dataSetNum 爲第$dataSetNum+1筆資料#$conf["WhereColumnName"][$i] 爲第 $i+1 個欄位的名稱#$result["dataCount"],爲取得的資料筆數。#必填參數:$conf["db"]["fastGetDbData"]["dbAddress"]=$conf["dbAddress"][$i+1];#爲dbServer的位置。$conf["db"]["fastGetDbData"]["dbAccount"]=$conf["dbAccount"][$i+1];#爲登入dbServer的帳號。$conf["db"]["fastGetDbData"]["dbName"]=$conf["dbName"][$i+1];#爲要存取的資料庫名稱$conf["db"]["fastGetDbData"]["tableName"]=$conf["tableName"][$i+1];#爲要存取的資料表名稱$conf["db"]["fastGetDbData"]["columnYouWant"]=$conf["columnYouWant"][$i+1];#你想要的欄位!#可省略參數:#如果 $conf["dbPassword"][$i+1] 有設定if(isset($conf["dbPassword"][$i+1])){#則設置其連線密碼$conf["db"]["fastGetDbData"]["dbPassword"]=$conf["dbPassword"][$i+1];#爲要存取dbServer的密碼}#if end#如果 $conf["dbPort"][$i+1] 有設定if(isset($conf["dbPort"][$i+1])){#則設置其連線的 port$conf["db"]["fastGetDbData"]["dbPort"]=$conf["dbPort"][$i+1];#爲要存取dbServer的port}#if end$conf["db"]["fastGetDbData"]["WhereColumnName"]=array($childTableLinkColumnName);#用於判斷語句的欄位項目陣列。$conf["db"]["fastGetDbData"]["WhereColumnValue"]=array($parentTableLinkColumnValue);#用於判斷語句的欄位數值陣列,若與LIKE搭配,則可以在關鍵自字串的左右名加上「%」符號,這樣就可以搜尋具有該字串的內容。#$conf["WhereColumnCombine"]=array("");#用於判斷語句當中需要()起來的判斷式,須爲陣列值,"s"代表「(」,"e"代表「)」 ,若無則須設爲""。#$conf["WhereColumnOperator"]=array("");#用於判斷語句的比較符號陣列,可以用的符號有「"="、">"、"<"、"LIKE"、"NOT LIKE"」,預設都爲「=」。#$conf["WhereColumnAndOr"]=array("");#用於判斷語句條件之間成立的條件是AND還是OR,須爲陣列值。其數量應爲要判斷的欄位數量減一。#$conf["orderItem"]="";#爲排序的項目依據,若要用隨機抽樣,可以用"rand()",可省略。#$conf["ascORdesc"]="";#爲要低增還是遞減排序,asc爲遞增;desc爲遞減。#$conf["numberStart"]="0";#為從第幾筆開始讀取,預設為0,代筆第一筆。#$conf["numLimit"]="30";#為要取幾筆資料,可以省略,省略則表示不限制數目。#$conf["groupBy"]=array("");#爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆)。$childTable[$j]=db::fastGetDbData($conf["db"]["fastGetDbData"]);unset($conf["db"]["fastGetDbData"]);#如果取得資料失敗if($childTable[$j]["status"]=="false"){#取得錯誤訊息$result["error"]=$childTable[$j];#設置執行結果為 "false"$result["status"]="false";#回傳結果return $result;}#if end#如果 $childTable[$j]["dataContent"] 有設置,則代表有符合的資料if(isset($childTable[$j]["dataContent"])){#針對每個取得的新欄位foreach($childTable[$j]["dataContent"] as $newColumnNameArray=>$newColumnNameValue){#新增第$j筆的欄位名稱與數值$result["parentTable"]["dataContent"][$conf["tableName"][$i+1].".".$newColumnNameArray][$j]=$newColumnNameValue[0];}#foreach end}#if end#反之代表 $childTable[$j]["dataContent"] 沒有設置,沒有符合的資料else{#根據每個要取得的欄位名稱foreach($conf["columnYouWant"][$i+1] as $newColumnName){#新增第$j筆的欄位名稱與數值$result["parentTable"]["dataContent"][$conf["tableName"][$i+1].".".$newColumnName][$j]="";}#foreach end}#else end}#for end}#for end#執行到這邊代表執行成功#設置執行結果為 "true"$result["status"]="true";#回傳結果return $result;}#function fastGetMutiLinkedDbData end/*#函式說明:#透過php來join多張資料表資料,提供各個欄位的包含資料庫、資料表、的資訊,會產生sql inner join的效果,資料會越來越多.#回傳結果:#$result["status"],執行結果"true"為成功;"false"為執行失敗。#$result["error"],錯誤訊息陣列。#$reuslt["function"],當前執行的函數#$result["content"],爲合併了子資料表欄位的父資料表的內容。#$result["content"][$conf["WhereColumnName"][$i]][$dataSetNum]#$dataSetNum 爲第$dataSetNum+1筆資料#$conf["WhereColumnName"][$i] 爲第 $i+1 個欄位的名稱#$result["parentTable"]["dataCount"],爲取得的資料筆數。#必填參數:#$conf["dbInfo"]["資料庫名稱"],字串陣列,爲要存取的"資料庫名稱"的連線資訊.#$conf["dbIfno"]["資料庫名稱"]["dbAddr"],字串,dbServer的位置.#$conf["dbInfo"]["資料庫名稱"]["dbAddr"]="";#$conf["dbIfno"]["資料庫名稱"]["dbAcct"],字串,dbServer的連線帳號.#$conf["dbInfo"]["資料庫名稱"]["dbAcct"]="";#$conf["mainTable"],字串,為 主資料庫.資料表 的名稱,例如 "dbA.dtA".$conf["mainTable"]="";#$conf["linkColumnName"],二字串陣列,為資料表間相連結的欄位名稱,格式為 array("mergedDb.mergedDt.mergedCol","linkDb.linkDt.linkCol") 就代表當前組好的欄位 mergedDb.mergedDt.mergedCol 跟資料庫 linkDB 表 linkDt 欄位 linkCol 進行資料的配對。$conf["linkColumnName"]=array(array(""));#可省略參數:#$conf["dbInfo"]["資料庫名稱"]["dbPass"],字串,dbServer的連線密碼.#$conf["dbInfo"]["資料庫名稱"]["dbPass"]="";#$conf["dbInfo"]["資料庫名稱"]["dbPort"],字串,db連線用的port.#$conf["dbInfo"]["資料庫名稱"]["dbPort"]="";#$conf["columnYouWant"],字串陣列,為想要的資料表欄位,格式為 "dbName.dtName.colName".#$conf["columnYouWant"]=array();#$conf["mainDtWhereColName"],字串陣列,用於主表判斷語句的欄位項目陣列.#$conf["mainDtWhereColName"]=array("");#$conf["mainDtWhereColVal"]=,字串陣列,用於主表判斷語句的欄位項目數值陣列,若與LIKE搭配,則可以在關鍵自字串的左右名加上「%」符號,這樣就可以搜尋具有該字串的內容.#$conf["mainDtWhereColVal"]=array("");#$conf["mainDtWhereColCombine"],字串陣列,用於主表判斷語句當中需要()起來的判斷式,須爲陣列值,"s"代表「(」,"e"代表「)」 ,若無則須設爲""。#$conf["mainDtWhereColCombine"]=array("");#$conf["mainWhereColumnOperator"],字串陣列,用於判斷語句的比較符號陣列,可以用的符號有「"="、">"、"<"、"LIKE"、"NOT LIKE"」,預設都爲「=」。#$conf["mainWhereColumnOperator"]=array("");#$conf["mainWhereColumnAndOr"],字串陣列,用於判斷語句條件之間成立的條件是AND還是OR,須爲陣列值。其數量應爲要判斷的欄位數量減一。#$conf["mainWhereColumnAndOr"]=array("");#$conf["mainWhereIn"],字串陣列,為每個in語句的內容,特定欄位數值等於陣列元素之一。array(array("colName",array("a","b","c")));代表欄位colName的值為a,b,c三者之一.#$conf["mainWhereIn"]=array(array("colName",array("a","b","c")));#$conf["mainWhereNotIn"],字串陣列,為每個not in語句的內容,array(array("colName",array("a","b","c")));代表欄位colName的值不為a,b,c三者之一.#$conf["mainWhereNotIn"]=array(array("colName",array("a","b","c")));#$conf["mainNumberStart"],字串,從第幾筆開始讀取,預設為"0",代筆第一筆。#$conf["mainNumberStart"]="0";#$conf["mainNumLimit"],字串,要取幾筆資料,可以省略,省略則表示不限制數目.#$conf["mainNumLimit"]="30";#$conf["mainGroupBy"],字串陣列,爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆)。#$conf["mainGroupBy"]=array();#$conf["mainOrderItem"],字串,組好的資料的排序項目依據#$conf["mainOrderItem"]="";#$conf["mainAscORdesc"],字串,組好的資料要低增還是遞減排序,asc爲遞增;desc爲遞減,預設不做處理.#$conf["mainAscORdesc"]="";#參考資料:#無.#備註:#無.*/public static function joinByPHP(&$conf=array()){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填參數:#$conf["variableCheck.checkArguments"]["varInput"],陣列變數,要檢查的陣列變數.$conf["variableCheck.checkArguments"]["varInput"]=&$conf;#$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("dbInfo","mainTable","linkColumnName");#$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("array","string","array");#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";#可省略參數:#$conf["variableCheck.checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。#$conf["variableCheck.checkArguments"]["canBeEmptyString"]="false";#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("columnYouWant","mainDtWhereColName","mainDtWhereColVal","mainDtWhereColCombine","mainWhereColumnOperator","mainWhereColumnAndOr","mainWhereIn","mainWhereNotIn","mainNumberStart","mainNumLimit","mainGroupBy","mainOrderItem","mainAscORdesc");#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("array","array","array","array","array","array","array","array","string","string","array","string","string");#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定.#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array("");$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);unset($conf["variableCheck.checkArguments"]);#如果檢查出錯if($checkResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查出錯if($checkResult["passed"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#取得 $conf["mainTable"] 的資料#檢查主表是否為 db.dt 的$foundDot=strpos($conf["mainTable"],'.');#如果不是if(!$foundDot){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"][]="參數 \$conf[\"mainTable\"] 必須為 資料庫名稱.資料表名稱";#回傳結果return $result;}#if end#反之else{#用 . 去切割字串$dbdtsplitedstr=explode('.',$conf["mainTable"]);#如果切割出來不等於兩段if(count($dbdtsplitedstr)!==2){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"][]="參數 \$conf[\"mainTable\"] 必須為 資料庫名稱.資料表名稱";#回傳結果return $result;}#if end#取得 mainTable 的 db name$mainDb=&$dbdtsplitedstr[0];#取得 mainTable 的名稱$mainDt=&$dbdtsplitedstr[1];}#else end#若主資料表連線參數不存在if(!isset($conf["dbInfo"][$mainDb])){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"][]="參數 \$conf[\"dbInfo\"][$mainDb] 必須提供";#回傳結果return $result;}#if end#檢查主表的參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.#$result["argu"],字串陣列,目前輸入的參數名稱陣列.#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.#$result["notNeedVar"],字串陣列,多餘的參數名稱.#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf["dbInfo"][$mainDb];#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可以省略的參數:#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("dbAddr","dbAcct");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.#$conf["canNotBeEmpty"]=array();#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.#$conf["canBeEmpty"]=array();#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("dbPass","dbPort");#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("dbPass","dbPort");#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null);#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".#$conf["disallowAllSkipableVarIsEmpty"]="";#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".#$conf["disallowAllSkipableVarIsEmptyArray"]="";#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();#參考資料:#array_keys=>http://php.net/manual/en/function.array-keys.php$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果執行失敗if($checkArguments["status"]==="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkArguments;#回傳結果return $result;}#if end#如果檢查不通過if($checkArguments["passed"]==="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkArguments;#回傳結果return $result;}#if end#函式說明:#一次取得資料庫、表的資料#回傳結果:#$result["status"],執行結果"true"為成功;"false"為執行失敗。#$result["error"],錯誤訊息陣列。#$result["function"],當前執行的漢書名稱.#$result["dataColumnName"],抓取的資料欄位名稱陣列.#$result["dataColumnName"][$i]代表第$i+1個欄位名稱#$result["dataContent"],爲資料的內容。#$result["dataContent"][$conf["WhereColumnName"][$i]][$dataSetNum]#$dataSetNum 爲第$dataSetNum+1筆資料#$conf["WhereColumnName"][$i] 爲第 $i+1 個欄位的名稱#$result["dataCount"],爲取得的資料筆數。#$result["sql"],執行的sql字串.#必填參數:$conf["db::fastGetDbData"]["dbAddress"]=$conf["dbInfo"][$mainDb]["dbAddr"];#爲dbServer的位置。$conf["db::fastGetDbData"]["dbAccount"]=$conf["dbInfo"][$mainDb]["dbAcct"];#爲登入dbServer的帳號。$conf["db::fastGetDbData"]["dbName"]=$mainDb;#爲要存取的資料庫名稱$conf["db::fastGetDbData"]["tableName"]=$mainDt;#爲要存取的資料表名稱$conf["db::fastGetDbData"]["columnYouWant"]=array("*");#你想要的欄位!,若設為「array("*")」則代表全部欄位.#可省略參數:#如果有給予連線密碼if(isset($conf["dbInfo"][$mainDb]["dbPass"])){$conf["db::fastGetDbData"]["dbPassword"]=$conf["dbInfo"][$mainDb]["dbPass"];#爲要存取dbServer的密碼}#if end#如果有給予連線portif(isset($conf["dbInfo"][$mainDb]["dbPort"])){$conf["db::fastGetDbData"]["dbPort"]=$conf["dbInfo"][$mainDb]["dbPort"];#爲要存取dbServer的port}#if end#如果有設置 $conf["mainDtWhereColName"]if(isset($conf["mainDtWhereColName"])){#設置參數$conf["db::fastGetDbData"]["WhereColumnName"]=$conf["mainDtWhereColName"];}#if end#如果有設置 $conf["mainDtWhereColVal"]if(isset($conf["mainDtWhereColVal"])){#設置參數$conf["db::fastGetDbData"]["WhereColumnValue"]=$conf["mainDtWhereColVal"];#用於判斷語句的欄位數值陣列,若與LIKE搭配,則可以在關鍵自字串的左右名加上「%」符號,這樣就可以搜尋具有該字串的內容。}#if end#如果有設置 $conf["mainDtWhereColCombine"]if(isset($conf["mainDtWhereColCombine"])){#設置參數$conf["db::fastGetDbData"]["WhereColumnCombine"]=$conf["mainDtWhereColCombine"];#用於判斷語句當中需要()起來的判斷式,須爲陣列值,"s"代表「(」,"e"代表「)」 ,若無則須設爲""。}#if end#如果有設置 $conf["mainWhereColumnOperator"]if(isset($conf["mainWhereColumnOperator"])){#設置參數$conf["db::fastGetDbData"]["WhereColumnOperator"]=$conf["mainWhereColumnOperator"];#用於判斷語句的比較符號陣列,可以用的符號有「"="、"!="、">"、"<"、"LIKE"、"NOT LIKE"」,預設都爲「=」。}#if end#如果有設置 $conf["mainWhereColumnAndOr"]if(isset($conf["mainWhereColumnAndOr"])){#設置參數$conf["db::fastGetDbData"]["WhereColumnAndOr"]=$conf["mainWhereColumnAndOr"];#用於判斷語句條件之間成立的條件是AND還是OR,須爲陣列值。其數量應爲要判斷的欄位數量減一。}#if end#如果有設置 $conf["mainWhereIn"]if(isset($conf["mainWhereIn"])){#$conf["whereIn"],二維字串陣列,為每個in語句的內容,特定欄位數值等於陣列元素之一。array(array("colName",array("a","b","c")));代表欄位colName的值為a,b,c三者之一.$conf["db::fastGetDbData"]["whereIn"]=$conf["mainWhereIn"];}#if end#如果有設置 $conf["mainWhereNotIn"]if(isset($conf["mainWhereNotIn"])){#設置參數#$conf["whereNotIn"],二維字串陣列,為每個not in語句的內容,array(array("colName",array("a","b","c")));代表欄位colName的值不為a,b,c三者之一.$conf["db::fastGetDbData"]["whereNotIn"]=$conf["mainWhereNotIn"];}#if end#如果有設置 $conf["mainNumberStart"]if(isset($conf["mainNumberStart"])){#設置參數$conf["db::fastGetDbData"]["numberStart"]=$conf["mainNumberStart"];#為從第幾筆開始讀取,預設為0,代筆第一筆。}#if end#如果有設置 $conf["mainNumLimit"]if(isset($conf["mainNumLimit"])){#設置參數$conf["db::fastGetDbData"]["numLimit"]=$conf["mainNumLimit"];#為要取幾筆資料,可以省略,省略則表示不限制數目。}#if end#如果有設置 $conf["mainGroupBy"]if(isset($conf["mainGroupBy"])){#設置參數$conf["db::fastGetDbData"]["groupBy"]=$conf["mainGroupBy"];#爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆)。}#if end#如果有設置 $conf["mainOrderItem"]if(isset($conf["mainOrderItem"])){#設置參數$conf["db::fastGetDbData"]["orderItem"]=$conf["mainOrderItem"];#爲排序的項目依據,若要用隨機抽樣,可以用"rand()",可省略。}#if end#如果有設置 $conf["mainAscORdesc"]if(isset($conf["mainAscORdesc"])){#設置參數#$conf["mainAscORdesc"],字串,組好的資料要低增還是遞減排序,asc爲遞增;desc爲遞減,預設不做處理.$conf["db::fastGetDbData"]["mainAscORdesc"]=$conf["mainAscORdesc"];}#if end$fastGetDbData=db::fastGetDbData($conf["db::fastGetDbData"]);unset($conf["db::fastGetDbData"]);#如果執行失敗if($fastGetDbData["status"]==="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$fastGetDbData;#回傳結果return $result;}#if end#var_dump($fastGetDbData);#初始化儲存合併好的資料$merged=array();#如果該存在的變數不存在if(!isset($fastGetDbData["dataColumnName"])){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$fastGetDbData;#回傳結果return $result;}#if end#針對每個欄位foreach($fastGetDbData["dataColumnName"] as $colName){#將當前資料的欄位用 dbName.dtName.dataColName 儲存$merged[$mainDb.".".$mainDt.".".$colName]=$fastGetDbData["dataContent"][$colName];}#foreach end#移除變數節省記憶體unset($fastGetDbData);#取得陣列元素數目$mergedCount=count($merged);#移除以數字為欄位索引的變數for($i=0;$i<$mergedCount/2;$i++){#移除索引unset($merged[$i]);}#for end#var_dump($merged);exit;#針對每個 $conf["linkColumnName"]foreach($conf["linkColumnName"] as $linkCondition){#如果不是陣列if(gettype($linkCondition)!=="array"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"][]="參數 linkColumnName 的陣列元素應該為陣列.";#回傳結果return $result;}#if end#如果數量不為2if(count($linkCondition)!==2){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"][]="參數 linkColumnName 的陣列元素應為有兩個元素的陣列.";#回傳結果return $result;}#if end#取得原始欄位的名稱$oriCol=&$linkCondition[0];#如果用來比對的原欄位不存在if(!isset($merged[$oriCol])){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"][]="用來比對的原始資料沒有欄位 「".$oriCol."」 存在.";#回傳結果return $result;}#if end#取得要增加的欄位名稱$newCol=&$linkCondition[1];#檢查增加的欄位名稱是否有 "."$foundDot=strpos($newCol,'.');#如果不是if(!$foundDot){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"][]="參數 linkColumnName 的欄位格式 ".$newCol." 必須為 資料庫名稱.資料表名稱.資料欄位名稱";#回傳結果return $result;}#if end#反之else{#用 . 去切割字串$dbdtsplitedstr=explode('.',$newCol);#如果切割出來不等於兩段if(count($dbdtsplitedstr)!==3){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"][]="參數 linkColumnName 的欄位格式 ".$newCol." 必須為 資料庫名稱.資料表名稱.資料欄位名稱";#回傳結果return $result;}#if end#取得 linkTable 的 db name$linkDb=&$dbdtsplitedstr[0];#取得 linkTable 的名稱$linkDt=&$dbdtsplitedstr[1];#取得 linkCol 的名稱$linkCol=&$dbdtsplitedstr[2];}#else end#檢查次表的參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.#$result["argu"],字串陣列,目前輸入的參數名稱陣列.#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.#$result["notNeedVar"],字串陣列,多餘的參數名稱.#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf["dbInfo"][$linkDb];#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可以省略的參數:#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("dbAddr","dbAcct");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.#$conf["canNotBeEmpty"]=array();#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.#$conf["canBeEmpty"]=array();#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("dbPass");#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("dbPass");#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null);#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".#$conf["disallowAllSkipableVarIsEmpty"]="";#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".#$conf["disallowAllSkipableVarIsEmptyArray"]="";#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();#參考資料:#array_keys=>http://php.net/manual/en/function.array-keys.php$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#var_dump($checkArguments);#exit;#如果執行失敗if($checkArguments["status"]==="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkArguments;#回傳結果return $result;}#if end#如果檢查不通過if($checkArguments["passed"]==="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkArguments;#回傳結果return $result;}#if end#初始化新合併過後的資料$newMerged=&$merged;#初始化儲存既有的欄位名稱$mergedColName=array_keys($merged);#取得既有的欄位的數量$mergedColCount=count($mergedColName);#主表有幾筆資料就執行幾次foreach($merged[$oriCol] as $index=>$mainColVal){#函式說明:#一次取得資料庫、表的資料#回傳結果:#$result["status"],執行結果"true"為成功;"false"為執行失敗。#$result["error"],錯誤訊息陣列。#$result["function"],當前執行的漢書名稱.#$result["dataColumnName"],抓取的資料欄位名稱陣列.#$result["dataColumnName"][$i]代表第$i+1個欄位名稱#$result["dataContent"],爲資料的內容。#$result["dataContent"][$conf["WhereColumnName"][$i]][$dataSetNum]#$dataSetNum 爲第$dataSetNum+1筆資料#$conf["WhereColumnName"][$i] 爲第 $i+1 個欄位的名稱#$result["dataCount"],爲取得的資料筆數。#$result["sql"],執行的sql字串.#必填參數:$conf["db::fastGetDbData"]["dbAddress"]=$conf["dbInfo"][$linkDb]["dbAddr"];#爲dbServer的位置。$conf["db::fastGetDbData"]["dbAccount"]=$conf["dbInfo"][$linkDb]["dbAcct"];#爲登入dbServer的帳號。$conf["db::fastGetDbData"]["dbName"]=$linkDb;#爲要存取的資料庫名稱$conf["db::fastGetDbData"]["tableName"]=$linkDt;#爲要存取的資料表名稱$conf["db::fastGetDbData"]["columnYouWant"]=array("*");#你想要的欄位!,若設為「array("*")」則代表全部欄位.#可省略參數:#如果有設置次表的密碼if(isset($conf["dbInfo"][$linkDb]["dbPass"])){$conf["db::fastGetDbData"]["dbPassword"]=$conf["dbInfo"][$linkDb]["dbPass"];#爲要存取dbServer的密碼}#if end$conf["db::fastGetDbData"]["WhereColumnName"]=array($linkCol);#用於判斷語句的欄位項目陣列。$conf["db::fastGetDbData"]["WhereColumnValue"]=array($mainColVal);#用於判斷語句的欄位數值陣列,若與LIKE搭配,則可以在關鍵自字串的左右名加上「%」符號,這樣就可以搜尋具有該字串的內容。#$conf["WhereColumnCombine"]=array("");#用於判斷語句當中需要()起來的判斷式,須爲陣列值,"s"代表「(」,"e"代表「)」 ,若無則須設爲""。#$conf["WhereColumnOperator"]=array("");#用於判斷語句的比較符號陣列,可以用的符號有「"="、"!="、">"、"<"、"LIKE"、"NOT LIKE"」,預設都爲「=」。#$conf["WhereColumnAndOr"]=array("");#用於判斷語句條件之間成立的條件是AND還是OR,須爲陣列值。其數量應爲要判斷的欄位數量減一。#$conf["whereIn"],二維字串陣列,為每個in語句的內容,特定欄位數值等於陣列元素之一。array(array("colName",array("a","b","c")));代表欄位colName的值為a,b,c三者之一.#$conf["whereIn"]=array(array("colName",array("a","b","c")));#$conf["whereNotIn"],二維字串陣列,為每個not in語句的內容,array(array("colName",array("a","b","c")));代表欄位colName的值不為a,b,c三者之一.#$conf["whereNotIn"]=array(array("colName",array("a","b","c")));#$conf["orderItem"]="";#爲排序的項目依據,若要用隨機抽樣,可以用"rand()",可省略。#$conf["ascORdesc"]="";#爲要低增還是遞減排序,asc爲遞增;desc爲遞減。#$conf["numberStart"]="0";#為從第幾筆開始讀取,預設為0,代筆第一筆。#$conf["db::fastGetDbData"]["numLimit"]="1";#為要取幾筆資料,可以省略,省略則表示不限制數目。#$conf["groupBy"]=array("");#爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆)。$fastGetDbData=db::fastGetDbData($conf["db::fastGetDbData"]);unset($conf["db::fastGetDbData"]);#如果query失敗if($fastGetDbData["status"]==="false"){#設置執行失敗$result["status"]="false";#設置錯誤訊息$result["error"]=$fastGetDbData;#回傳結果;return $result;}#if end#如果如果沒有符合的資料if($fastGetDbData["dataCount"]===0){#如果有欄位名稱存在if(isset($fastGetDbData["dataColumnName"])){#次表有幾個欄位就執行幾次foreach($fastGetDbData["dataColumnName"] as $linkedColName){#給予NULL$newMerged[$linkDb.".".$linkDt.".".$linkedColName][$index]=NULL;}#foreach end}#if end}#if end#反之有資料else{#次表有幾個欄位就執行幾次foreach($fastGetDbData["dataColumnName"] as $linkedColName){#設置新的欄位資料$newMerged[$linkDb.".".$linkDt.".".$linkedColName][$index]=$fastGetDbData["dataContent"][$linkedColName][0];}#foreach end#有幾筆資料就執行幾次for($i=1;$i<$fastGetDbData["dataCount"];$i++){#取得資新料的索引$newMergedDataIndex=count($newMerged[$mergedColName[0]]);#有幾個欄位就執行幾次for($j=0;$j<$mergedColCount;$j++){#複製既有的欄位資料$newMerged[$mergedColName[$j]][$newMergedDataIndex]=$newMerged[$mergedColName[$j]][$index];}#for end#次表有幾個欄位就執行幾次foreach($fastGetDbData["dataColumnName"] as $linkedColName){#加上新的欄位資料$newMerged[$linkDb.".".$linkDt.".".$linkedColName][$newMergedDataIndex]=$fastGetDbData["dataContent"][$linkedColName][$i];}#foreach end}#for end}#else end}#foreach end}#foreach end#如果有設置要的欄位if(isset($conf["columnYouWant"])){#初始化儲存僅需要的欄位$filteredCol=array();#依照每個需要的欄位foreach($conf["columnYouWant"] as $colYouWant){#如果要的欄位不存在if(!isset($newMerged[$colYouWant])){#設置執行不正常;$result["status"]="false";#設置錯誤訊息$result["error"][]="欄位 ".$colYouWant." 不存在於查詢後的結果!";#回傳結果return $result;}#if end#取得欄位內容$filteredCol[$colYouWant]=&$newMerged[$colYouWant];}#foreach end#置換成篩選過後的欄位資訊$newMerged=$filteredCol;}#if end#設置執行正常$result["status"]="true";#設置join完的資料;$result["content"]=$merged;#回傳結果return $result;}#function joinByPHP end/*#函式說明:#取得該資料表總共有幾筆資料#回傳變數:#$result["status"],爲執行是否正常,若爲"true"則成功,若爲"false"則表示失敗了#$result["function"],當前執行的函數名稱#$result["error"],錯誤訊息#$result["dataCount"],資料表裏面的資料筆數。#必填參數:#$conf["dbAddress"],字串,爲mysql-Server的位置.$conf["dbAddress"]=$dbAddress;#$conf["dbAccount"]字串,爲用於連入mysql-Server時要使用的帳號.$conf["dbAccount"]=$dbAccount;#$conf["selectedDataBaseName"],字串,要選取的資料庫名稱$conf["selectedDataBaseName"]=$dbName;#$conf["selectedDataTableName"],字串,為要計算的對象資料表$conf["selectedDataTableName"]="";#為要計算的對象資料表#可省略參數:#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼.#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,可省略,若省略則代表用預設的 port 3306.#$conf["dbPort"]=$dbPort;#參考資料:#無.#備註:#無.*/public static function getDataCountsInTable($conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#必填參數:$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("dbAddress","dbPassword","selectedDataBaseName","selectedDataTableName");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");#可省略參數:#$conf["variableCheck"]["isexistMuti"]["variableType"]=array();#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");#$conf["variableCheck"]["isexistMuti"]"canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);unset($conf["variableCheck"]["isexistMuti"]);#如果 $checkResult["status"] 等於 "false"if($checkResult["status"]=="false"){#設置錯識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果 $checkResult["passed"] 等於 "false"if($checkResult["passed"]=="false"){#設置錯識別$result["passed"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#函式說明:#執行mysql指令#回傳結果::#$result["status"],"true"為執行成功;"false"為執行失敗。#$result["error"],錯誤訊息的陣列#$result["queryResource"],mysql查詢後的resource資源,用於給mysql解析的資源變數。#$result["queryString"],mysql查詢的語言#查詢號的解果,需要解析。#必填參數:$conf["db"]["execMysqlQuery"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["execMysqlQuery"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["execMysqlQuery"]["dbSql"]="select count(*) from ".$conf["selectedDataBaseName"].".".$conf["selectedDataTableName"]." ;";#要執行sql語法#可省略參數:#如果 $conf["dbPassword"] 有設定if(isset($conf["dbPassword"])){$conf["db"]["execMysqlQuery"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果 $conf["dbPort"] 有設定if(isset($conf["dbPort"])){$conf["db"]["execMysqlQuery"]["dbPort"]=$conf["dbPort"];#爲連線到mysql-Server時要使用的port,可省略,若省略則代表預設的 port.}#if end#執行查尋$countResult=db::execMysqlQuery($conf["db"]["execMysqlQuery"]);unset($conf["db"]["execMysqlQuery"]);#如果執行失敗if($countResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$countResult;#回傳結果return $result;}#if end#解析 dataTableSelect($conf) 後的結果,亦即將執行sql語法後所得到的結果解析放進變數裏面#回傳結果:#$result["status"],執行結果"true"為成功;"false"為失敗#$result["error"],錯誤訊息#$result["dataColumnName"],為資料欄位的名稱陣列.#$result["dataColumnName"][$i]代表第一個欄位名稱.#$result["dataContent"],爲資料的內容。#$result["dataContent"][$conf["tableValueName"][$i]][$dataSetNum],#$dataSetNum 爲第$dataSetNum+1筆資料#$conf["tableValueName"][$i] 爲第 $i+1 個欄位的名稱#$result["dataCount"],爲取得的資料筆數。#必填參數:$conf["db"]["sendQueryDataToVariabele"]["sqlQueryResult"]=$countResult["queryResource"];#爲執行sql語法所獲得的查詢結果。$conf["db"]["sendQueryDataToVariabele"]["tableValueName"]=array("count(*)");#爲該資料表列項目的每一項名稱,須爲陣列值,若為「array("*")」則代表所有欄位.$conf["db"]["sendQueryDataToVariabele"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["sendQueryDataToVariabele"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號#可省略參數:#如果 $conf["dbPassword"] 有設置if(isset($conf["dbPassword"])){$conf["db"]["sendQueryDataToVariabele"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果 $conf["dbPort"] 有設置if(isset($conf["dbPort"])){$conf["db"]["sendQueryDataToVariabele"]["dbPort"]=$conf["dbPort"];#爲連線到mysql-Server時要使用的port,可省略,若省略則代表預設的port 3306}#if end$conf["db"]["sendQueryDataToVariabele"]["valueName"]=array("count");#陣列,爲該資料表列項目的每一項所要對應的變數名稱,預設為欄位的名稱($conf["tableValueName"]).#參考資料:#http://www.w3school.com.cn/php/func_mysql_fetch_array.asp => 解析取得的資料表欄位時,能夠選擇回傳含有欄位名稱與數字代表的key.$getCountResult=db::sendQueryDataToVariabele($conf["db"]["sendQueryDataToVariabele"]);unset($conf["db"]["sendQueryDataToVariabele"]);#如果 $getCountResult["status"] 等於 "false"if($getCountResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$getCountResult;#回傳結果return $result;}#if end#取得資料筆數$result["dataCount"]=$getCountResult["dataContent"]["count"][0];#執行到這邊代表執行正常$result["status"]="true";#回傳查詢的結果;return $result;}#function getDataCountsInTable end/*#函式說明:#插入資料到指定的資料表裡面,插入資料完畢可以選擇是否要進行轉址。#回傳結果:#$result["status"],爲查詢是否成功,若爲"true"則成功,若爲"false"則表示失敗了.#$result["error"],錯誤訊息.#$result["sql"],執行的sql語法.#$result["lastInsertId"],新增的資料id.#$result["function"],當前執行的涵式#必填參數:#$conf["dbAddress"],字串,爲mysql-Server的位置$conf["dbAddress"]=$dbAddress;#$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號$conf["dbAccount"]=$dbAccount;#$conf["selectedDataBaseName"],字串,要選取的資料庫名稱$conf["selectedDataBaseName"]=$dbName;#$conf["tableName"],字串,爲要插入資料的資料表名稱$conf["tableName"]="";#$conf["columnName"],字串陣列,爲資料表的項目名稱.例如:$conf["columnName"]=array("columnName1","columnName2","columnName3",...);$conf["columnName"]=array();#$conf["insertValue"],字串陣列,爲要插入度數值.#例如:$conf["insertValue"]=array("insertValue1","insertValue2","insertValue3",...);$conf["insertValue"]=array();#可省略參數:#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,可省略,若省略則代表用預設的 3306 port.#$conf["dbPort"]=$dbPort;#參考資料:#http://www.javaworld.com.tw/jute/post/view?bid=21&id=173738&sty=1#備註:#無.*/public static function insertData($conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#函式說明:#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。#回傳結果:#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#必填參數:$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("dbAddress","dbAccount","selectedDataBaseName","tableName","columnName","insertValue");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");#可省略參數:$conf["variableCheck"]["isexistMuti"]["variableType"]=array("string","string","string","string","array","array");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");#$conf["variableCheck"]["isexistMuti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。#備註:#功能與checkExistAndType函式相同$variableCheck=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);unset($conf["variableCheck"]["isexistMuti"]);#如果 $variableCheck["status"] 等於 "false"if($variableCheck["status"]=="false"){#設置執行錯誤的識別$result["status"]="false";#設置執行錯誤的訊息$result["error"]=$variableCheck;#回傳結果return $result;}#if end#如果 $variableCheck["passed"] 等於 "false"if($variableCheck["passed"]=="false"){#設置執行錯誤的識別$result["status"]="false";#設置執行錯誤的訊息$result["error"]=$variableCheck;#回傳結果return $result;}#if end#連線到資料庫#函式說明:#連線到資料庫,結果會回傳一個陣列#$result["status"],若連線成功則爲"true",連線失敗則爲"false".#$result["connectInformation"],爲回傳的mysql連線資訊.#$result["error"],錯誤訊息 .#$result["function"],當前執行的函數名稱.#必填參數:$conf["db"]["dbConnect"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["dbConnect"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號#$conf["dbName"],字串,爲要連的資料庫名稱$conf["db"]["dbConnect"]["dbName"]=$conf["selectedDataBaseName"];#可省略參數:#如果 $conf["dbPassword"] 有設定if(isset($conf["dbPassword"])){$conf["db"]["dbConnect"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果 $conf["dbPort"] 有設定if(isset($conf["dbPort"])){$conf["db"]["dbConnect"]["dbPort"]=$conf["dbPort"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end$con=db::dbConnect($conf["db"]["dbConnect"]);unset($conf["db"]);#如果連線到資料庫失敗if($con["status"]==="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$con;#回傳結果return $result;}#if end#var_dump($con);#取得mysqli物件$mysqli=$con["connectInformation"];#輸入資料到 資料表 board 的語法$str1="insert into `".$conf["selectedDataBaseName"]."`.`".$conf["tableName"]."`(";#取得一筆資料有幾個項目$count=count($conf["columnName"]);#跑 $count-1 次,插入第一筆到最倒數第二筆for($i=0;$i<=($count-2);$i++){#放入欲插入的項目名稱$str1=$str1."`".$conf["columnName"][$i]."`".",";}#for end#插入最後一筆項目名稱$lastItem = ($count-1);$str1=$str1."`".$conf["columnName"][$lastItem]."`)";#要插入的數值語法開始$str2=" values (";#跑 $count-1 次for($i=0;$i<=($count-2);$i++){#插入第一筆到最倒數第二筆的資料內容$str2=$str2."'".mysqli_real_escape_string($mysqli,$conf["insertValue"][$i])."',";}#for end#插入最後一筆的資料內容$lastItem = ($count-1);$str2=$str2."'".mysqli_real_escape_string($mysqli,$conf["insertValue"][$lastItem])."');";#合併要執行的sql語法$sqlString=$str1.$str2;#執行sql語法#函式說明:#執行mysql指令#回傳結果::#$result["status"],"true"為執行成功;"false"為執行失敗。#$result["error"],錯誤訊息的陣列#$result["queryResource"],mysql查詢後的resource資源,用於給mysql解析的資源變數。#$result["queryConn"],用於資料庫操作的變數.#$result["queryString"],mysql查詢的語言#查詢號的解果,需要解析。#必填參數:$conf["db::execMysqlQuery"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db::execMysqlQuery"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db::execMysqlQuery"]["dbSql"]=$sqlString;#要執行sql語法#可省略參數:#如果 $conf["dbPassword"] 有設置if(isset($conf["dbPassword"])){$conf["db::execMysqlQuery"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果 $conf["dbPort"] 有設置if(isset($conf["dbPort"])){$conf["db::execMysqlQuery"]["dbPort"]=$conf["dbPort"];#爲連線到mysql-Server時要使用的port,可省略,若省略則代表預設的3306 port.}#if end#$conf["dbLink"],物件,mysqli物件,由mysqli_connect()回傳的物件內容,若為數值則改用賬號密碼等資訊進行連線,反之則沿用連線物件.$conf["db::execMysqlQuery"]["dbLink"]=$mysqli;#$conf["autoClose],字串,"true"代表要自動斷線,預設為"true"會自動斷線$conf["db::execMysqlQuery"]["autoClose"]="false";$mysqlQueryResult=db::execMysqlQuery($conf["db::execMysqlQuery"]);unset($conf["db::execMysqlQuery"]);#若執行 query 語法失敗if($mysqlQueryResult["status"]=="false"){#設置執行錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$mysqlQueryResult;#回傳結果return $result;}#else end#取得新增的該筆記錄id$result["lastInsertId"]=mysqli_insert_id($mysqlQueryResult["queryConn"]);#取得執行的sql字串$result["sql"]=$mysqlQueryResult["queryString"];#執行到這邊代表執行成功$result["status"]="true";#回傳結果return $result;}#function insertData end/*#函式說明:#更新資料表裏面的資料#回傳結果:#$result["status"],爲查詢是否成功,若爲0則成功,若爲1則表示失敗了#$result["error"],錯誤訊息#$result["function"],當前執行的函數名稱#$result["sql"],執行的sql語法.#$result["argu"],使用的參數.#必填參數:#$conf["fileArgu"],字串,變數__FILE__的內容.$conf["fileArgu"]=__FILE__;#$conf["dbAddress"],字串,爲mysql-Server的位置$conf["dbAddress"]=$dbAddress;#$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號$conf["dbAccount"]=$dbAccount;#$conf["selectedDataBaseName"],字串,要選取的資料庫名稱$conf["selectedDataBaseName"]=$dbName;#$conf["tableName"],字串,要修改的資料表名稱$conf["tableName"]="";#$conf["whereColumn"],字串陣列,爲用來判斷要更新的哪筆資料的欄位名稱,須爲陣列值$conf["whereColumn"]=array("");#$conf["whereValue"],字串陣列,為用來判斷是要更新哪筆資料的欄位對應數值,須爲陣列值$conf["whereValue"]=array("");#$conf["tableColumnName"],字串陣列,資料表項目的名稱陣列$conf["tableColumnName"]=array("");#$conf["updateDataValue"],字串陣列,要更改成對應資料表項目的內容,須為陣列值$conf["updateDataValue"]=array("");#可省略參數:#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼.#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,可省略,若省略則代表使用預設的port 3306.#$conf["dbPort"]=$dbPort;#參考資料:#無.#備註:#建議修改 whereValue 參數為多維陣列,每個元素為有兩個元素的陣列,其元素的key為operator者代表運算子,其value可以為"=","<>",">","<",預設為"=";key為value者代表運算元,亦即用來比較的數字、字串等.*/public static function updateDataTableContent($conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!=="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#儲存使用的參數$result["argu"]=$conf;#函式說明:#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#必填參數:$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("fileArgu","dbAddress","dbAccount","selectedDataBaseName","tableName","whereColumn","whereValue","tableColumnName","updateDataValue");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");#可省略參數:$conf["variableCheck"]["isexistMuti"]["variableType"]=array("string","string","string","string","string","array","array","array","array");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");#$conf["variableCheck"]["isexistMuti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);unset($conf["variableCheck"]["isexistMuti"]);#如果檢查參數作業出錯if($checkResult["status"]==="false"){#設置執行錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查沒通過if($checkResult["passed"]==="false"){#設置執行錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#將陣列變數 $conf["whereColumn"] 與 $conf["whereValue"] 對應的變數中不存在的 $conf["whereValue"][$i] 元素去掉,並同時調整 $conf["whereColumn"] 使兩者變數的元素數量均相同。#函式說明:#比對兩個陣列變數,如果其中一個陣列變數的元素不存在,則將之消去,然後進行替補。另一個陣列變數則也要做同步的動作。#回傳結果::#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常。#$result["error"],錯誤訊息。#$result["content"],組合成新值的一維陣列。#$result["function"],當前執行的函數名稱。#必填參數:$conf_compareAndModify2Arrays["arraysA"]=$conf["tableColumnName"];#用來跟陣列變數B比較的陣列變數A$conf_compareAndModify2Arrays["arraysB"]=$conf["updateDataValue"];#用來跟陣列變數A比較的陣列變數B$compareAndModifyTwoArrays=arrays::compareAndModifyTwoArrays($conf_compareAndModify2Arrays);unset($conf_compareAndModify2Arrays);#如果 arrays::compareAndModifyTwoArrays 執行失敗if($compareAndModifyTwoArrays["status"]==="false"){#設置執行錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$compareAndModifyTwoArrays;#回傳結果return $result;}#if end#將整理好的 $result["compareAndModify2Arrays"]["A"] 放到 $conf["whereColumn"] ; $result["compareAndModify2Arrays"]["B"] 放到 $conf["whereValue"]$conf["tableColumnName"]=$compareAndModifyTwoArrays["newArraysA"];$conf["updateDataValue"]=$compareAndModifyTwoArrays["newArraysB"];#更新 $conf["selectedDatabaseName"].$tableName 資料表$selectUpdateTableSql="UPDATE `".$conf["selectedDataBaseName"]."`.`".$conf["tableName"]."` ";#更新資料表資料語法的一部分$chooseColumnSql="SET ";#取得一筆資料有幾個項目$counts=count($conf["tableColumnName"]);#儲存宣告shell變數的指令陣列$shellVarDefined=array();#儲存要宣告的變數$varDefined=array();#有$count欄項目,for($i=0;$i<$counts;$i++){#如果是最後一項要更新的資料if($i==($counts-1)){#如果內容不為字串if(gettype($conf["updateDataValue"][$i])!=="string"){#設置執行錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"][]="欲使用的變數不為字串";#設置錯誤訊息$result["error"][]=$conf["updateDataValue"][$i];#回傳結果return $result;}#if end#定義 shell script 變數$shellVarDefined[]=array("cmd"=>"x".$i."=","param"=>array($conf["updateDataValue"][$i]));#定義sql變數$varDefined[]="select @x".$i." := '\${x".$i."}';";#將要更新的內容字串串接,結尾無逗號$chooseColumnSql = $chooseColumnSql."`".$conf["tableColumnName"][$i]."`= @x".$i." ";}#判斷式結束#如果不是最後一項要更新的資料if($i!=($counts-1)){#定義 shell script 變數$shellVarDefined[]=array("cmd"=>"x".$i."=","param"=>array($conf["updateDataValue"][$i]));#定義sql變數$varDefined[]="select @x".$i." := '\${x".$i."}';";#將要更新的內容字串串接,結尾有逗號$chooseColumnSql = $chooseColumnSql."`".$conf["tableColumnName"][$i]."`= @x".$i." ,";}#判斷式結束}#回圈結束#取得條件有幾項$conditionArrayCounts=count($conf["whereColumn"]);#構成條件式for($i=0;$i<$conditionArrayCounts;$i++){#如果是第一筆if($i===0){#尋找的條件式$condition="WHERE `".$conf["whereColumn"][$i]."` = '".$conf["whereValue"][$i]."'";#測試有無抓到第一個條件#var_dump($condition);}#判斷式結束#如果不是第一筆if($i!==0){#其它條件$condition=$condition." AND `".$conf["whereColumn"][$i]."` = '".$conf["whereValue"][$i]."'";#測試有無抓到其它條件#var_dump($condition);}#判斷式結束}#迴圈結束#初始化定義變數的sql$varDefineStr="";#針對每個要使用的數值foreach($varDefined as $index=>$var){#累加定義變數的sql$varDefineStr=$varDefineStr.$var;}#foreach end#合併所有的語法成一句完整的語法$sqlString = $varDefineStr.$selectUpdateTableSql.$chooseColumnSql.$condition;#debug#var_dump(__LINE__,$sqlString);#設置取得執行的sql語法$result["sql"]=$sqlString;#函式說明:#用shell執行mysql指令.#回傳結果::#$result["status"],"true"為執行成功;"false"為執行失敗。#$result["error"],錯誤訊息的陣列#$result["function"],當前執行的涵式#$result["queryString"],mysql查詢的語言.#必填參數:#$conf["fileArgu"],字串,變數__FILE__的內容.$conf["db::shell"]["fileArgu"]=$conf["fileArgu"];#$conf["dbSql"],字串,要執行sql語法$conf["db::shell"]["dbSql"]=$sqlString;#$conf["dbAddress"],字串,爲mysql-Server的位置。$conf["db::shell"]["dbAddress"]=$conf["dbAddress"];#$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號。$conf["db::shell"]["dbAccount"]=$conf["dbAccount"];#可省略參數:$conf["db::shell"]["pre"]=$shellVarDefined;#如果有設定密碼if(isset($conf["dbPassword"])){#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼。$conf["db::shell"]["dbPassword"]=$conf["dbPassword"];}#if end#$conf["dbName"],字串,爲要連的資料庫名稱$conf["db::shell"]["dbName"]=$conf["selectedDataBaseName"];#如果有設定portif(isset($conf["dbPort"])){#$conf["dbPort"],字串,為連線到mysql-Server時對應的port,可省略,預設為3306.$conf["db::shell"]["dbPort"]=$conf["dbPort"];}#if end$shell=db::shell($conf["db::shell"]);unset($conf["db::shell"]);#如果執行sql失敗if($shell["status"]==="false"){#設置執行不正常$result["status"]="false";#設置錯誤訊息$result["error"]=$shell;#回傳結果return $result;}#if end#設置執行正常$result["status"]="true";#回傳結果return $result;}#function updateDataTableContent end/*#函式說明:#將滿足條件的資料從資料表中刪除#回傳結果:#$result["status"],爲查詢是否成功,若爲0則成功,若爲1則表示失敗了#$result["function"],當前執行的函數名稱.#$result["error"],錯誤訊息#$result["sql"],執行的語法#必填參數:#$conf["dbAddress"],字串,爲mysql-Server的位置$conf["dbAddress"]=$dbAddress;#$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號$conf["dbAccount"]=$dbAccount;#$conf["selectedDataBaseName"],字串,要選取的資料庫名稱$conf["selectedDataBaseName"]=$dbName;#$conf["selectedDataTableName"],字串,要選取的資料表的名稱$conf["selectedDataTableName"]="";#$conf["whereColumn"],字串陣列,爲用來判斷要刪除的哪筆資料的欄位名稱,須爲陣列值$conf["whereColumn"]=array("");#$conf["whereValue"]=,字串陣列,為用來判斷是要刪除哪筆資料的欄位對應數值,須爲陣列值$conf["whereValue"]=array("");#可省略參數:#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,可省略,若省略則代表使用預設的port 3306.#$conf["dbPort"]=$dbPort;#$conf["WhereColumnOperator"],字串陣列,用於判斷語句的比較符號陣列,可以用的符號有「"="、">"、"<"、"LIKE"、"NOT LIKE"」,預設都爲「=」。#$conf["WhereColumnOperator"]=array("");#$conf["WhereColumnAndOr"]=array("");#用於判斷語句條件之間成立的條件是AND還是OR,須爲陣列值,預設皆爲AND。其數量應爲要判斷的欄位數量減一。#$conf["WhereColumnAndOr"]=array("");#參考資料:#無.#備註:#無.*/public static function deleteDataFromTable(&$conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("dbAddress","dbAccount","selectedDataBaseName","selectedDataTableName","whereColumn","whereValue");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string","string","array","array");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可省略參數:#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。#$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("dbPassword","dbPort","WhereColumnOperator","WhereColumnAndOr");#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","array","array");#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null,null,null);#$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array("WhereColumnOperator","WhereColumnAndOr");#var_dump($conf["variableCheck::checkArguments"]);$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果檢查作業出出錯if($checkResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查作業出出錯if($checkResult["passed"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#刪除資料的語法開始,指定了表格的名稱$sql="DELETE FROM `".$conf["selectedDataBaseName"]."`.`".$conf["selectedDataTableName"]."` ";#取得有幾個條件$counts=count($conf["whereColumn"]);#連線到資料庫#函式說明:#連線到資料庫,結果會回傳一個陣列#$result["status"],若連線成功則爲"true",連線失敗則爲"false".#$result["connectInformation"],爲回傳的mysql連線資訊.#$result["error"],錯誤訊息 .#$result["function"],當前執行的函數名稱.#必填參數:$conf["db"]["dbConnect"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["dbConnect"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號#$conf["dbName"],字串,爲要連的資料庫名稱$conf["db"]["dbConnect"]["dbName"]=$conf["selectedDataBaseName"];#可省略參數:#如果 $conf["dbPassword"] 有設定if(isset($conf["dbPassword"])){$conf["db"]["dbConnect"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果 $conf["dbPort"] 有設定if(isset($conf["dbPort"])){$conf["db"]["dbConnect"]["dbPort"]=$conf["dbPort"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end$con=db::dbConnect($conf["db"]["dbConnect"]);unset($conf["db"]);#如果連線到資料庫失敗if($con["status"]==="false"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"]=$con;#回傳結果return $result;}#if end#var_dump($con);#取得mysqli物件$mysqli=$con["connectInformation"];#條件語句for($i=0;$i<$counts;$i++){#如果 $conf["WhereColumnOperator"] 不存在if(!isset($conf["WhereColumnOperator"])){#如果 $conf["WhereColumnOperator"][$i] 不存在if(!isset($conf["WhereColumnOperator"][$i])){#設置為 "="$conf["WhereColumnOperator"][$i]="=";}#if end}#if end#反之若 $conf["WhereColumnOperator"][$i] 不存在else if(!isset($conf["WhereColumnOperator"][$i])){#設置為 "="$conf["WhereColumnOperator"][$i]="=";}#if end#以下變數應該要為字串$checkedVar["whereColumn"]=$conf["whereColumn"][$i];$checkedVar["WhereColumnOperator"]=$conf["WhereColumnOperator"][$i];$checkedVar["whereValue"]=$conf["whereValue"][$i];#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$checkedVar;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("whereColumn","WhereColumnOperator","whereValue");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string");#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可省略參數:#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。#$conf["canBeEmptyString"]="false";#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");#$conf["skipableVariableName"]=array();#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");#$conf["skipableVariableType"]=array();#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".#$conf["skipableVarDefaultValue"]=array("");#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果檢查失敗if($checkResult["status"]=="false"){#設置執行錯誤$result["status"]="false";#設置執行錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查失敗if($checkResult["passed"]=="false"){#設置執行錯誤$result["status"]="false";#設置執行錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果是第一筆if($i==0){#如果 $conf["WhereColumnOperator"] 存在if(isset($conf["WhereColumnOperator"])){#設定第一個條件$sql = $sql." WHERE `".$conf["whereColumn"][$i]. "` ".$conf["WhereColumnOperator"][$i]." '". mysqli_real_escape_string($mysqli,$conf["whereValue"][$i])."'";}#if end#反之 $conf["WhereColumnOperator"] 不存在else{#設定第一個條件$sql = $sql." WHERE `".$conf["whereColumn"][$i]. "` = '". mysqli_real_escape_string($mysqli,$conf["whereValue"][$i])."'";}#else end}#判斷式#如果不是第一個條件if($i!=0){#如果 $conf["WhereColumnAndOr"] 不存在if(!isset($conf["WhereColumnAndOr"])){#將 $conf["WhereColumnAndOr"] 裏面的元素置換爲 AND#函式說明:#建立一個陣列,可以指派陣列的內容,然後回傳#回傳結果::#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["function"],當前執行的函數名稱.#$result["error"],錯誤訊息陣列.#$result["content"],爲陣列變數內容#必填參數:$conf_arrays_create["arrayContent"]=array("AND");#陣列元素的內容,須爲陣列值。#可省略參數:$conf_arrays_create["arrayCounts"]=$counts-1;#爲陣列的元素有幾個,若沒設定,則數量爲$conf["arrayContent"]裏的元素數量$conf_arrays_create["theSameAs"]="true";#若設爲"true",則所有元素內容都跟第一個元素內容相同$create=arrays::create($conf_arrays_create);unset($conf_arrays_create);#如果建立陣列失敗if($create["status"]=="false"){#設置執行錯誤$result["status"]="false";#設置執行錯誤訊息$result["error"]=$create;#回傳結果return $result;}#if end#取得 $conf["WhereColumnAndOr"] 參數內容$conf["WhereColumnAndOr"]=$create["content"];}#if end#如果 $conf["WhereColumnOperator"] 存在if(isset($conf["WhereColumnOperator"])){#設定其它條件$sql=$sql." ".$conf["WhereColumnAndOr"][$i-1]." `".$conf["whereColumn"][$i]. "` ".$conf["WhereColumnOperator"][$i]." '".mysqli_real_escape_string($mysqli,$conf["whereValue"][$i])."'";}#if end#反之 $conf["WhereColumnOperator"] 不存在else{#設定其它條件$sql=$sql." ".$conf["WhereColumnAndOr"][$i-1]." `".$conf["whereColumn"][$i]. "` = '".mysqli_real_escape_string($mysqli,$conf["whereValue"][$i])."'";}#else end}#判斷式}#迴圈結束#sql語法結束$sqlString=$sql.";";#執行sql語法#函式說明:#執行mysql指令#回傳結果::#$result["status"],"true"為執行成功;"false"為執行失敗。#$result["error"],錯誤訊息的陣列#$result["queryResource"],mysql查詢後的resource資源,用於給mysql解析的資源變數。#$result["queryString"],mysql查詢的語言#查詢號的解果,需要解析。#必填參數:$conf["db"]["execMysqlQuery"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["execMysqlQuery"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["execMysqlQuery"]["dbSql"]=$sqlString;#要執行sql語法#可省略參數:#如果 $conf["dbPassword"] 有設置if(isset($conf["dbPassword"])){$conf["db"]["execMysqlQuery"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果 $conf["dbPort"] 有設置if(isset($conf["dbPort"])){$conf["db"]["execMysqlQuery"]["dbPort"]=$conf["dbPort"];#爲連線到mysql-Server時要使用的port,可省略,若省略則代表預設的 3306 port.}#if end#$conf["dbLink"],物件,mysqli物件,由mysqli_connect()回傳的物件內容,若為數值則改用賬號密碼等資訊進行連線,反之則沿用連線物件.$conf["db"]["execMysqlQuery"]["dbLink"]=$mysqli;$db["execMysqlQuery"]=db::execMysqlQuery($conf["db"]["execMysqlQuery"]);unset($conf["db"]["execMysqlQuery"]);#如果sql執行有誤if($db["execMysqlQuery"]["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$db["execMysqlQuery"];#回傳結果return $result;}#if end#取得執行的sql語法$result["sql"]=$db["execMysqlQuery"]["queryString"];#執行到這邊表執行成功$result["status"]="true";#回傳結果return $result;}#函式結束/*#函式說明:#取得目標資料庫底下所有資料表的索引鍵,可作為foreign key的可用欄位,欄位必須為index key或primary key.#回傳結果::#$result["status"],執行是否成功"true"為執行成功,"false"為執行失敗。#$result["error"],執行的錯誤訊息.#$result["function"],當前執行函式名稱.#$result["content"][$i]["tableName"],欄位所屬的資料表名稱.#$result["content"][$i]["columnKey"],是"primary key"還是"index key".#$result["content"][$i]["columnName"],欄位名稱.#$result["content"][$i]["typeAndLength"],欄位儲存形態與長度限制.#$result["content"][$i]["tableDotColumnName"],欄位的「鍵所屬資料表名稱.鍵欄位名稱」.#$result["content"][$i]["tableDotColumnVarType"],「資料索引鍵所屬資料表名稱.索引鍵欄位名稱 儲存變數型別與長度」.#$result["indexKey"]["tableName"],index key欄位所屬的資料表陣列#$result["indexKey"]["columnName"],index key的欄位名稱陣列#$result["indexKey"]["typeAndLength"],index key的欄位儲存型態與長度限制陣列#$result["indexKey"]["tableDotColumnName"],index key的 「資料索引鍵所屬資料表名稱.索引鍵欄位名稱」 陣列#$result["indexKey"]["tableDotColumnVarType"],index key的 「資料索引鍵所屬資料表名稱.索引鍵欄位名稱 儲存變數型別與長度」 陣列#$result["primaryKey"][$tableCount]["dtName"],主鍵所屬的資料表名稱,若沒有主鍵則為null.#$result["primaryKey"][$tableCount]["columnName"],資料表的主鍵欄位名稱,若沒有主鍵則為null.#$result["primaryKey"][$tableCount]["columnVarType"],資料表的主鍵欄位的儲存形態,若沒有主鍵則為null..#$result["primaryKey"][$tableCount]["columnVarLengthLimit"],資料表的主鍵欄位的儲存長度限制,若沒有主鍵則為null.#$result["primaryKey"][$tableCount]["columnVarTypeAndLengthLimit"],儲存當前資料表的主鍵欄位的儲存形態與長度限制,若沒有主鍵則為null.#必填參數:#$conf["dbAddress"],字串,爲mysql-Server的位置$conf["dbAddress"]=$dbAddress;#$conf["dbAccount"],字串,爲用於連入mysql-Server時要使用的帳號$conf["dbAccount"]=$dbAccount;#$conf["selectedDataBaseName"],字串,爲目標資料表所屬的資料庫$conf["selectedDataBaseName"]="";##可省略參數:#$conf["dbPassword"],字串,爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼#$conf["dbPassword"]=$dbPassword;##$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,可省略,若省略則代表使用預設的port 3306.#$conf["dbPort"]=$dbPort;#參考資料:#無.#備註:#目前只能取得一個資料庫的所有索引鍵.*/public static function getAllIndexKeyInAllDataBase(&$conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.#$result["argu"],字串陣列,目前輸入的參數名稱陣列.#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.#$result["notNeedVar"],字串陣列,多餘的參數名稱.#必填參數:#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck::checkArguments"]["varInput"]=&$conf;#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("dbAddress","dbAccount","selectedDataBaseName");#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string");#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";#可省略參數:#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.#$conf["canBeEmptyString"]="false";#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或集合.$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("dbPassword","dbPort");#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("dbPassword","dbPort");#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null);#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.#$conf["arrayCountEqualCheck"][]=array();#參考資料:#array_keys=>http://php.net/manual/en/function.array-keys.php$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);unset($conf["variableCheck::checkArguments"]);#如果檢查有誤if($checkResult["status"]=="false"){#設置執行錯誤的識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果檢查不通過if($checkResult["passed"]=="false"){#設置執行錯誤的識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#取得資料表列表#查詢特定資料庫裡的資料表列表,會回傳查詢的結果#$result["connectStatus"],若成功則爲0,失敗則爲1。#$result["connectInformation"],爲回傳的mysql連線資訊。#$result["tableName"] 爲查詢的資料庫名稱陣列,#第一筆資料庫名稱爲$result["tableName"][0],#第二筆資料庫名稱爲$result["tableName"][1],#其餘以此類推。#$result["dataCounts"] 爲資料庫的總筆數#必填參數:$conf["db"]["getDataTableList"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db"]["getDataTableList"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db"]["getDataTableList"]["selectedDataBaseName"]=$conf["selectedDataBaseName"];#爲指定的資料庫名稱#可省略參數:#如果有設定 $conf["dbPassword"]if(isset($conf["dbPassword"])){#則套用設定$conf["db"]["getDataTableList"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#則套用設定$conf["db"]["getDataTableList"]["dbPort"]=$conf["dbPort"];#爲連線到mysql-Server時要使用的port,預設為3306.}#if end#原始語法:#show tables FROM databaseName,代表檢視databaseName裡面的資料表清單。$tableList=db::getDataTableList($conf["db"]["getDataTableList"]);unset($conf["db"]);#debug#var_dump($tableList);#如果 資料表清單 取得失敗if($tableList["status"]=="false"){#設置執行錯誤的識別$result["status"]="fasle";#設置錯誤訊息$result["error"]="取得資料表清單失敗";#回傳結果return $result;}#if end#初始化資料表的計數變數$tableCount=0;#初始化儲存 index key$result["indexKey"]=array();#初始化儲存index key所屬的表格$result["indexKey"]["tableName"]=array();#根據每個資料表foreach($tableList["tableName"] as $tableName){#取得該資料表的欄位資訊#函式說明:#取得資料表所有欄位的詳細資訊#回傳的內容:#$result["status"],執行結果,"true"代表執行成功;"false"代表執行失敗#$result["error"],錯誤訊息陣列#$result["sql"],執行的sql語法#$result["oriInput"],原始的資料表欄位資訊#$result["everyLine"],逐行的欄位資訊#$result["tableName"],當前查詢的資料表名稱#$result["engine"],資料表使用的儲存引擎#$result["charset"],資料表預設的編碼#$result["columnName"][$i],各欄位的名稱陣列,$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnVarTypeAndLengthLimit"][$i],各欄位儲存的變數形態與長度限制,$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnVarType"][$i],各欄位變數儲存的型態,$i爲1開始的數字,也可以使用欄位的名稱.#$result["columnVarLengthLimit"][$i],個欄位變數的長度限制,若不存在其限制,則為"",$i爲1開始的數字,也可以使用欄位的名稱.#$result["columnNotNull"][$i],各欄位是否可以不爲null,"true"爲可以不爲null;"false"爲可以爲"null",$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnAutoIncrement"][$i],各欄位是否會自動加1,"true"爲會;"false"爲不會,$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnDefault"][$i],各欄位的預設內容,若無則爲"沒有指定",$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnOnUpdateAction"][$i],當資料有修改時,該欄位的內容要怎麼因應,$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnCharacterSet"][$i],各欄位使用的CharacterSet,$i爲0開始的數字,也可以使用欄位的名稱。#$result["columnCollate"][$i],各欄位使用的Collate,$i爲0開始的數字,也可以使用欄位的名稱。#$result["key"]["exist"],該資料表是否有索引鍵,"true"代表有;"false"代表沒有。#$result["key"][$j],該資料表的索引鍵陣列,$j爲0開始的數字,也可以使用欄位的名稱。#$result["keyConstraintName"][$j],該資料表用於識別索引鍵的CONSTRAINT名稱陣列,$j爲0開始的數字,也可以使用欄位的名稱。#$result["primaryKey"],該資料表的主鍵#$result["foreignKey"]["exist"],該資料表是否有foreign key,"true"代表有;"fasle"代表沒有。#$result["foreignKey"]["constraintName"][$k],用來識別外鍵的CONSTRAINT名稱陣列,$k爲0開始的數字,也可以使用欄位的名稱。#$result["foreignKey"]["columnName"][$k],外鍵的名稱陣列,$k爲0開始的數字,也可以使用欄位的名稱。#$result["foreignKey"]["referencesTable"][$k],外鍵參照的欄位,$k爲0開始的數字#$result["foreignKey"]["referencesColumn"][$k],外鍵參照的欄位屬於哪個資料表,$k爲0開始的數字#$result["foreignKey"]["OnUpdateAction"][$l],當參照的欄位資料更新時,會怎麼同步,$l爲0開始的數字#$result["foreignKey"]["OnDeleteAction"][$m],當參照的欄位資料移除時,會怎麼同步,$m爲0開始的數字#必填參數:$conf["db"]["getTableColumnDetailInfo"]["dbAddress"]=$conf["dbAddress"];#資料庫的網路位置$conf["db"]["getTableColumnDetailInfo"]["dbAccount"]=$conf["dbAccount"];#連線到資料庫要用的帳號$conf["db"]["getTableColumnDetailInfo"]["selectedDataBase"]=$conf["selectedDataBaseName"];#連線到資料庫要選擇的資料庫$conf["db"]["getTableColumnDetailInfo"]["selectedDataTable"]=$tableName;#連線到資料庫要檢視的資料表#可省略參數:#如果有設定 $conf["dbPassword"]if(isset($conf["dbPassword"])){#則套用設定$conf["db"]["getTableColumnDetailInfo"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果有設定 $conf["dbPort"]if(isset($conf["dbPort"])){#則套用設定$conf["db"]["getTableColumnDetailInfo"]["dbPort"]=$conf["dbPort"];#爲連線到mysql-Server時要使用的port,預設為3306.}#if end$columnData=db::getTableColumnDetailInfo($conf["db"]["getTableColumnDetailInfo"]);unset($conf["db"]["getTableColumnDetailInfo"]);#如果取得資料表結構詳細資訊失敗if($columnData["status"]=="false"){#設置執行錯誤的識別$result["status"]="fasle";#設置錯誤訊息$result["error"]=$columnData;#回傳結果return $result;}#if end#儲存當前資料表的主鍵所屬資料表名稱$result["primaryKey"][$tableCount]["dtName"]=$tableName;#如果該資料表沒有主鍵if(!isset($columnData["primaryKey"])){#將數值設為null#儲存當前資料表的主鍵欄位名稱$result["primaryKey"][$tableCount]["columnName"]=null;#儲存當前資料表的主鍵欄位的儲存形態$result["primaryKey"][$tableCount]["columnVarType"]=null;#儲存當前資料表的主鍵欄位的儲存長度限制$result["primaryKey"][$tableCount]["columnVarLengthLimit"]=null;#儲存當前資料表的主鍵欄位的儲存形態與長度限制$result["primaryKey"][$tableCount]["columnVarTypeAndLengthLimit"]=null;}#if end#反之有主鍵else{#儲存當前資料表的主鍵欄位名稱$result["primaryKey"][$tableCount]["columnName"]=$columnData["primaryKey"];#儲存當前資料表的主鍵欄位的儲存形態$result["primaryKey"][$tableCount]["columnVarType"]=$columnData["columnVarType"][$columnData["primaryKey"]];#儲存當前資料表的主鍵欄位的儲存長度限制$result["primaryKey"][$tableCount]["columnVarLengthLimit"]=$columnData["columnVarLengthLimit"][$columnData["primaryKey"]];#儲存當前資料表的主鍵欄位的儲存形態與長度限制$result["primaryKey"][$tableCount]["columnVarTypeAndLengthLimit"]=$columnData["columnVarTypeAndLengthLimit"][$columnData["primaryKey"]];}#else end#資料表計數加1$tableCount++;#如果有index keyif($columnData["key"]["exist"]=="true"){#依據每個index keyfor($i=0;$i<count($columnData["key"]);$i++){#如果該元素不存在if(!isset($columnData["key"][$i])){#中斷迴圈break;}#if end#取得其index key欄位$tempColumnName=$result["indexKey"]["columnName"][]=$columnData["key"][$i];#如果 $columnData["columnVarTypeAndLengthLimit"][$i] 有設置if(isset($columnData["columnVarTypeAndLengthLimit"][$tempColumnName])){#取得該欄位的儲存變數型別與長度限制$result["indexKey"]["typeAndLength"][]=$columnData["columnVarTypeAndLengthLimit"][$tempColumnName];}#if end#反之else{#將 得該欄位的儲存變數型別與長度限制 設為 ""$result["indexKey"]["typeAndLength"][]="";}#else end#取得其index key的所屬資料表$result["indexKey"]["tableName"][]=$tableName;}#for end}#if end}#foreach end#根據每個索引鍵欄位與其所屬的資料表來建立 「索引鍵所屬資料表名稱.索引鍵欄位名稱 儲存變數型別與長度」 格式的陣列for($i=0;$i<count($result["indexKey"]["tableName"]);$i++){#設置 索引鍵所屬資料表名稱.索引鍵欄位名稱 格式的陣列$result["indexKey"]["tableDotColumnName"][]=$result["indexKey"]["tableName"][$i].".".$result["indexKey"]["columnName"][$i];#設置 索引鍵所屬資料表名稱.索引鍵欄位名稱 欄位儲存型態與長度限制 格式的陣列$result["indexKey"]["tableDotColumnVarType"][]=$result["indexKey"]["tableName"][$i].".".$result["indexKey"]["columnName"][$i]." ".$result["indexKey"]["typeAndLength"][$i];}#for end#組裝主鍵與索引鍵的資訊#$result["content"][$i]["tableName"],欄位所屬的資料表名稱.#$result["content"][$i]["columnKey"],是"primary key"還是"index key".#$result["content"][$i]["columnName"],欄位名稱.#$result["content"][$i]["typeAndLength"],欄位儲存形態與長度限制.#$result["content"][$i]["tableDotColumnName"],欄位的「鍵所屬資料表名稱.鍵欄位名稱」.#$result["content"][$i]["tableDotColumnVarType"],「資料索引鍵所屬資料表名稱.索引鍵欄位名稱 儲存變數型別與長度」.#$result["indexKey"]["tableName"],index key欄位所屬的資料表陣列#$result["indexKey"]["columnName"],index key的欄位名稱陣列#$result["indexKey"]["typeAndLength"],index key的欄位儲存型態與長度限制陣列#$result["indexKey"]["tableDotColumnName"],index key的 「資料索引鍵所屬資料表名稱.索引鍵欄位名稱」 陣列#$result["indexKey"]["tableDotColumnVarType"],index key的 「資料索引鍵所屬資料表名稱.索引鍵欄位名稱 儲存變數型別與長度」 陣列#$result["primaryKey"][$tableCount]["dtName"],主鍵所屬的資料表名稱,若沒有主鍵則為null.#$result["primaryKey"][$tableCount]["columnName"],資料表的主鍵欄位名稱,若沒有主鍵則為null.#$result["primaryKey"][$tableCount]["columnVarType"],資料表的主鍵欄位的儲存形態,若沒有主鍵則為null..#$result["primaryKey"][$tableCount]["columnVarLengthLimit"],資料表的主鍵欄位的儲存長度限制,若沒有主鍵則為null.#$result["primaryKey"][$tableCount]["columnVarTypeAndLengthLimit"],儲存當前資料表的主鍵欄位的儲存形態與長度限制,若沒有主鍵則為null.#能夠被外鍵參照的欄位計數$referenceColumnCount=0;#有幾個主鍵就執行幾次for($i=0;$i<count($result["primaryKey"]);$i++){#暫存當前資料表的名稱$dtName=$result["primaryKey"][$i]["dtName"];#如果主鍵欄位名稱不為 null,亦即有主鍵if($result["primaryKey"][$i]["columnName"]!=null){#儲存欄位所屬的資料表名稱.$result["content"][$referenceColumnCount]["tableName"]=$dtName;#儲存是"primary key"還是"index key".$result["content"][$referenceColumnCount]["columnKey"]="primary key";#儲存欄位名稱$result["content"][$referenceColumnCount]["columnName"]=$result["primaryKey"][$i]["columnName"];#儲存欄位儲存形態與長度限制.$result["content"][$referenceColumnCount]["typeAndLength"]=$result["primaryKey"][$i]["columnVarLengthLimit"];#儲存欄位的「鍵所屬資料表名稱.鍵欄位名稱」.$result["content"][$referenceColumnCount]["tableDotColumnName"]=$dtName.".".$result["primaryKey"][$i]["columnName"];#儲存欄位的「資料索引鍵所屬資料表名稱.索引鍵欄位名稱 儲存變數型別與長度」.$result["content"][$referenceColumnCount]["tableDotColumnVarType"]=$dtName.".".$result["primaryKey"][$i]["columnName"]." ".$result["primaryKey"][$i]["columnVarTypeAndLengthLimit"];#能夠被外鍵參照的欄位計數加1$referenceColumnCount++;}#if end#用當前資料表的名稱取得索引鍵的資訊#所有資料表有幾個索引鍵就執行幾次for($j=0;$j<count($result["indexKey"]["tableName"]);$j++){#如果是當前資料表的索引鍵if($result["indexKey"]["tableName"][$j]==$dtName){#儲存欄位所屬的資料表名稱.$result["content"][$referenceColumnCount]["tableName"]=$dtName;#儲存是"primary key"還是"index key".$result["content"][$referenceColumnCount]["columnKey"]="index key";#儲存欄位名稱$result["content"][$referenceColumnCount]["columnName"]=$result["indexKey"]["columnName"][$j];#儲存欄位儲存形態與長度限制.$result["content"][$referenceColumnCount]["typeAndLength"]=$result["indexKey"]["typeAndLength"][$j];#儲存欄位的「鍵所屬資料表名稱.鍵欄位名稱」.$result["content"][$referenceColumnCount]["tableDotColumnName"]=$result["indexKey"]["tableDotColumnName"][$j];#儲存欄位的「資料索引鍵所屬資料表名稱.索引鍵欄位名稱 儲存變數型別與長度」.$result["content"][$referenceColumnCount]["tableDotColumnVarType"]=$result["indexKey"]["tableDotColumnVarType"][$j];#能夠被外鍵參照的欄位計數加1$referenceColumnCount++;}#if end}#for end}#for end#執行到這邊代表執行成功$result["status"]="true";#回傳結果return $result;}#function getAllIndexKeyInAllDataBase end/*#函式說明:#將資料表輸出成csv檔案#回傳結果:#$result["status"],執行是否正常,"true"代表執行正常,"false"代表執行失敗.#$result["error"],錯誤訊息#$result["function"],當前執行的涵式#$result["csvFile"],輸出的csv檔案位置與名稱.#必填參數:#$conf["dbAddress"],字串,欲連線的mariadb/mysql伺服器IP/domainName位置.$conf["dbAddress"]=$dbAddress;#$conf["dbAccount"],字串,連線到mariadb/mysql所用的帳戶.$conf["dbAccount"]=$dbAccount;#$conf["dbName"],字串,目標資料表位於哪個資庫底下.$conf["dbName"]=$dbName;#$conf["dtName"],字串,目標資料表的名稱.$conf["dtName"]="";#可省略參數:#$conf["dbPassword"],字串,連線到mariadb/mysql伺服器時所使用的密碼,若未設置則代表不使用密碼來連線.#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,可省略,若省略則代表使用預設的port 3306.#$conf["dbPort"]=$dbPort;#$conf["column"],陣列,要的欄位名稱,預設為「array(*)」代表所有欄位都要,#$conf["column"]=array("*");#$conf["WhereColumnName"],陣列,篩選用的特定欄位#$conf["WhereColumnName"]=array("");#$conf["WhereColumnValue"],陣列,篩選用特定欄位的數值要等於多少才是我們要的.#$conf["WhereColumnValue"]=array("");#$conf["groupBy"],陣列,爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆).#$conf["groupBy"]=array("");#$conf["orderItem"],字串,爲排序的項目依據,若要用隨機抽樣,可以用"rand()",可省略。#$conf["orderItem"]="";##$conf["ascORdesc"],字串,爲要低增還是遞減排序,asc爲遞增;desc爲遞減。#$conf["ascORdesc"]="asc";#$conf["outPutPathAndName"],字串,輸出的csv檔案要存放在哪裡.#$conf["outPutPathAndName"]="";#$conf["noDownload"],字串,如果爲"true"則代表不要讓使用者下載,但會回傳檔案的相對位置#$conf["noDownload"]="true";#參考資料:#無.#備註:#無.*/public static function exportTableToCsv($conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。#回傳結果:#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#必填參數:$conf["db"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數$conf["db"]["isexistMuti"]["variableCheck"]=array("dbAddress","dbAccount","dbName","dtName");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");#可省略參數:$conf["db"]["isexistMuti"]["variableType"]=array("string","string","string","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");$conf["db"]["isexistMuti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。$checkResult=variableCheck::isexistMulti($conf["db"]["isexistMuti"]);unset($conf["db"]["isexistMuti"]);#如果 $checkResult["status"] 等於 "false"if($checkResult["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果 $checkResult["passed"] 等於 "false"if($checkResult["passed"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$checkResult;#回傳結果return $result;}#if end#如果 $conf["column"] 沒有設置if(!isset($conf["column"])){#則代表要全部的欄位$conf["column"]=array("*");}#if end#抓取資料表資料#函式說明:#一次取得資料庫、表的資料#回傳結果:#$result["status"],執行結果"true"為成功;"false"為執行失敗。#$result["error"],錯誤訊息陣列。#$result["dataColumnName"],抓取的資料欄位名稱陣列.#$result["dataColumnName"][$i]代表第$i+1個欄位名稱#$result["dataContent"],爲資料的內容。#$result["dataContent"][$conf["WhereColumnName"][$i]][$dataSetNum]#$dataSetNum 爲第$dataSetNum+1筆資料#$conf["WhereColumnName"][$i] 爲第 $i+1 個欄位的名稱#$result["dataCount"],爲取得的資料筆數。#$result["sql"],執行的sql字串.#必填參數:$conf["db"]["fastGetDbData"]["dbAddress"]=$conf["dbAddress"];#爲dbServer的位置。$conf["db"]["fastGetDbData"]["dbAccount"]=$conf["dbAccount"];#爲登入dbServer的帳號。$conf["db"]["fastGetDbData"]["dbName"]=$conf["dbName"];#爲要存取的資料庫名稱$conf["db"]["fastGetDbData"]["tableName"]=$conf["dtName"];#爲要存取的資料表名稱$conf["db"]["fastGetDbData"]["columnYouWant"]=$conf["column"];#你想要的欄位!#可省略參數:#如果 $conf["dbPassword"] 有設置if(isset($conf["dbPassword"])){#則設定進行連線密碼$conf["db"]["fastGetDbData"]["dbPassword"]=$conf["dbPassword"];#爲要存取dbServer的密碼}#if end#如果 $conf["dbPort"] 有設置if(isset($conf["dbPort"])){#則設定進行連線的 port$conf["db"]["fastGetDbData"]["dbPort"]=$conf["dbPort"];#爲要存取dbServer的port}#if end#如果 $conf["WhereColumnName"] 有設置if(isset($conf["WhereColumnName"])){$conf["db"]["fastGetDbData"]["WhereColumnName"]=$conf["WhereColumnName"];#用於判斷語句的欄位項目陣列。}#if end#如果 $conf["WhereColumnValue"] 有設置if(isset($conf["WhereColumnValue"])){$conf["db"]["fastGetDbData"]["WhereColumnValue"]=$conf["WhereColumnValue"];#用於判斷語句的欄位數值陣列,若與LIKE搭配,則可以在關鍵自字串的左右名加上「%」符號,這樣就可以搜尋具有該字串的內容。}#if end#$conf["db"]["fastGetDbData"]["WhereColumnCombine"]=array("");#用於判斷語句當中需要()起來的判斷式,須爲陣列值,"s"代表「(」,"e"代表「)」 ,若無則須設爲""。#$conf["db"]["fastGetDbData"]["WhereColumnOperator"]=array("");#用於判斷語句的比較符號陣列,可以用的符號有「"="、">"、"<"、"LIKE"、"NOT LIKE"」,預設都爲「=」。#$conf["db"]["fastGetDbData"]["WhereColumnAndOr"]=array("");#用於判斷語句條件之間成立的條件是AND還是OR,須爲陣列值。其數量應爲要判斷的欄位數量減一。#如果 $conf["orderItem"] 有設定if(isset($conf["orderItem"])){$conf["db"]["fastGetDbData"]["orderItem"]=$conf["orderItem"];#爲排序的項目依據,若要用隨機抽樣,可以用"rand()",可省略。}#if end#如果 $conf["ascORdesc"] 有設定if(isset($conf["ascORdesc"])){$conf["db"]["fastGetDbData"]["ascORdesc"]=$conf["ascORdesc"];#爲要低增還是遞減排序,asc爲遞增;desc爲遞減。}#if end#$conf["db"]["fastGetDbData"]["numberStart"]="0";#為從第幾筆開始讀取,預設為0,代筆第一筆。#$conf["db"]["fastGetDbData"]["numLimit"]="30";#為要取幾筆資料,可以省略,省略則表示不限制數目。#如果 $conf["groupBy"] 有設定if(isset($conf["groupBy"])){$conf["db"]["fastGetDbData"]["groupBy"]=$conf["groupBy"];#爲要以哪幾個欄爲作爲分羣的依據(欄位相同的數值僅會取出一筆).}#if end$db["fastGetDbData"]=db::fastGetDbData($conf["db"]["fastGetDbData"]);unset($conf["db"]["fastGetDbData"]);#var_dump($db["fastGetDbData"]);#如果 $db["fastGetDbData"]["status"] 等於 "false"if($db["fastGetDbData"]["status"]=="false"){#設置錯誤識別$result["status"]="false";#設置錯誤訊息$result["error"]=$db["fastGetDbData"];#回傳結果return $result;}#if end#初始化要寫入的內容$writedData[0]=$db["fastGetDbData"]["dataColumnName"];#var_dump($writedData);#取得要寫入的欄位數值#針對每筆資料for($i=0;$i<$db["fastGetDbData"]["dataCount"];$i++){#依據每個欄位for($j=0;$j<count($db["fastGetDbData"]["dataColumnName"]);$j++){#儲存到列裡面$writedData[$i+1][]=$db["fastGetDbData"]["dataContent"][$db["fastGetDbData"]["dataColumnName"][$j]][$i];}#foreach end}#for end#var_dump($writedData);#輸出成csv檔#函式說明:#快速建立一個csv檔案,並且要求使用者下載。#回傳結果::#如果有設置$conf["noDownload"]爲"true"的話,則會回傳檔案的位置#必填參數:$conf["db"]["create"]["dataArray"]=$writedData;#要寫入的文字,$conf["dataArray"][$i],代表第 $i 行的內容。#可省略參數:#如果有設置 $conf["outPutPathAndName"]if(isset($conf["outPutPathAndName"])){$conf["db"]["create"]["csvFilePathAndName"]=$conf["outPutPathAndName"];#csv檔案的名稱,預設爲系統時間}#if end#如果 $conf["noDownload"] 有設置if(isset($conf["noDownload"])){#且$conf["noDownload"]等於"true"if($conf["noDownload"]=="true"){$conf["db"]["create"]["noDownload"]="true";#如果爲"true"則代表不要讓使用者下載,但會回傳檔案的相對位置}#if end}#if end#參考資料來源:#http://php.net/manual/en/function.str-split.phpreturn csv::create($conf["db"]["create"]);unset($conf["db"]["create"]);}#funciton exportTableToCsv end/*#函式說明:#透過一筆筆將資料表刪除後,重設識別欄位的自動增量欄位起始值為1#回傳結果:#$result["status"],執行是否正常,"true"代表執行正常,"false"代表執行失敗.#$result["error"],錯誤訊息.#$result["function"],當前執行的函數名稱.#$result["sql"],執行的sql語法陣列.#必填參數:#$conf["dbAddress"],字串,連線到資料庫的位置.$conf["dbAddress"]=$dbAddress;#$conf["dbAccount"],字串,連線到資料庫的帳號.$conf["dbAccount"]=$dbAccount;#$conf["dbName"],字串,要連線到哪個資料庫.$conf["dbName"]=$dbName;#$conf["dtName"],字串,要重設重設識別欄位的自動增量為0的資料表名稱.$conf["dtName"]="";#可省略參數:#$conf["dbPassword"],字串,連線到資料庫的密碼.#$conf["dbPassword"]=$dbPassword;#$conf["dbPort"],字串,爲連線到mysql-Server時要使用的port,可省略,若省略則代表使用預設的port 3306.#$conf["dbPort"]=$dbPort;#參考資料:#http://dev.mysql.com/doc/refman/5.0/en/alter-table.html#備註:#參考語法,ALTER TABLE dbName.dtName AUTO_INCREMENT = 1;*/public static function eraseDataInTableThenResetAutoIncrement(&$conf){#初始化要回傳的內容$result=array();#取得當前執行的函數名稱$result["function"]=__FUNCTION__;#如果 $conf 不為陣列if(gettype($conf)!="array"){#設置執行失敗$result["status"]="false";#設置執行錯誤訊息$result["error"][]="\$conf變數須為陣列形態";#如果傳入的參數為 nullif($conf==null){#設置執行錯誤訊息$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";}#if end#回傳結果return $result;}#if end#檢查參數#函式說明:#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.#$reuslt["error"],執行不正常結束的錯訊息陣列.#$result["function"],當前執行的函式名稱.#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息#必填參數:#$conf["variableCheck.checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。$conf["variableCheck.checkArguments"]["varInput"]=&$conf;#$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("dbAddress","dbAccount","dbName","dtName");#$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array("string","string","string","string");#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";#可省略參數:#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。#$conf["canBeEmptyString"]="false";#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("dbPassword","dbPort");#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");$conf["variableCheck.checkArguments"]["skipableVariableType"]=array("string","string");#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".#$conf["skipableVarDefaultValue"]=array("");$checkResult=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);unset($conf["variableCheck.checkArguments"]);#如果 檢查參數 失敗if($checkResult["status"]=="false"){#設置執行不正常$result["status"]="false";#設置執行錯誤$result["error"]=$checkResult;#回傳節果return $result;}#if end#如果 檢查參數 不通過if($checkResult["passed"]=="false"){#設置執行不正常$result["status"]="false";#設置執行錯誤$result["error"]=$checkResult;#回傳節果return $result;}#if end#執行一筆筆移除資料的sql語法#函式說明:#執行mysql指令#回傳結果::#$result["status"],"true"為執行成功;"false"為執行失敗。#$result["error"],錯誤訊息的陣列#$result["queryResource"],mysql查詢後的resource資源,用於給mysql解析的資源變數。#$result["queryString"],mysql查詢的語言#查詢號的解果,需要解析。#必填參數:$conf["db.execMysqlQuery"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db.execMysqlQuery"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db.execMysqlQuery"]["dbSql"]="DELETE FROM `".$conf["dbName"]."`.`".$conf["dtName"]."` ";#要執行sql語法#可省略參數:#如果有設置 $conf["dbPassword"]if(isset($conf["dbPassword"])){$conf["db.execMysqlQuery"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果有設置 $conf["dbPort"]if(isset($conf["dbPort"])){$conf["db.execMysqlQuery"]["dbPort"]=$conf["dbPort"];#爲連線到mysql-Server時要使用的port,可省略,若省略則代表預設的3306 port.}#if end$queryResult=db::execMysqlQuery($conf["db.execMysqlQuery"]);unset($conf["db.execMysqlQuery"]);#如果執行 sql 語法失敗if($queryResult["status"]=="false"){#設置執行不正常$result["status"]="false";#設置執行錯誤$result["error"]=$queryResult;#回傳節果return $result;}#if end#取得所執行的sql語法$result["sql"][]=$queryResult["queryString"];#執行重設增量的sql語法#函式說明:#執行mysql指令#回傳結果::#$result["status"],"true"為執行成功;"false"為執行失敗。#$result["error"],錯誤訊息的陣列#$result["queryResource"],mysql查詢後的resource資源,用於給mysql解析的資源變數。#$result["queryString"],mysql查詢的語言#查詢號的解果,需要解析。#必填參數:$conf["db.execMysqlQuery"]["dbAddress"]=$conf["dbAddress"];#爲mysql-Server的位置$conf["db.execMysqlQuery"]["dbAccount"]=$conf["dbAccount"];#爲用於連入mysql-Server時要使用的帳號$conf["db.execMysqlQuery"]["dbSql"]="ALTER TABLE ".$conf["dbName"].".".$conf["dtName"]." AUTO_INCREMENT = 1";#要執行sql語法#如果有設置 $conf["dbPassword"]if(isset($conf["dbPassword"])){$conf["db.execMysqlQuery"]["dbPassword"]=$conf["dbPassword"];#爲連線到mysql-Server時要使用的密碼,可省略,若省略則代表不使用密碼}#if end#如果有設置 $conf["dbPort"]if(isset($conf["dbPort"])){$conf["db.execMysqlQuery"]["dbPort"]=$conf["dbPort"];#爲連線到mysql-Server時要使用的port,可省略,若省略則代表預設的3306 port.}#if end$queryResult=db::execMysqlQuery($conf["db.execMysqlQuery"]);unset($conf["db.execMysqlQuery"]);#如果執行 sql 語法失敗if($queryResult["status"]=="false"){#設置執行不正常$result["status"]="false";#設置執行錯誤$result["error"]=$queryResult;#回傳節果return $result;}#if end#取得所執行的sql語法$result["sql"][]=$queryResult["queryString"];#設置執行正常$result["status"]="true";#回傳結果return $result;}#function eraseDataInTableThenResetAutoIncrement end}#db class end?>