function SQL语句解析函数($sql) { global $db,$MetaTables; //判断自定义表是否存在,如果不存在直接返回 //判断是否是联合全操作,是否有子查询,是否用left //如果有,则表示为手写SQL代码,不是系统生成,则直接返回,不进行过滤 $sql = trim($sql); $sqllower = strtolower($sqllower); if(substr($sqllower,0,strlen("create table"))=="create table") { return $sql; } if(substr($sqllower,0,strlen("drop table"))=="drop table") { return $sql; } if(substr($sqllower,0,strlen("check table"))=="check table") { return $sql; } if(substr($sqllower,0,strlen("optimize table"))=="optimize table") { return $sql; } if(substr($sqllower,0,strlen("repair table"))=="repair table") { return $sql; } if(substr($sqllower,0,strlen("analyze table"))=="analyze table") { return $sql; } //进行关键字过滤 $sql = eregi_replace(" From "," from ",$sql); $sql = eregi_replace(" FROM "," from ",$sql); $sql = eregi_replace(" Where "," where ",$sql); $sql = eregi_replace(" WHERE "," where ",$sql); $sql = eregi_replace(" Select "," select ",$sql); $sql = eregi_replace(" SELECT "," select ",$sql); $sql = eregi_replace(" Order By "," order by ",$sql); $sql = eregi_replace(" ORDER BY "," order by ",$sql); $sql = eregi_replace(" Update "," update ",$sql); $sql = eregi_replace(" UPDATE "," update ",$sql); $sql = eregi_replace(" Delete "," delete ",$sql); $sql = eregi_replace(" DELETE "," delete ",$sql); $sql = eregi_replace(" Limit "," limit ",$sql); $sql = eregi_replace(" LIMITE "," limit ",$sql); $sql = eregi_replace(" Left "," left ",$sql); $sql = eregi_replace(" LEFT "," left ",$sql); //处理SELECT if(substr($sql,0,strlen("select "))=="select ") { $FromArray = explode(" from ",$sql); //分析旧的SQL if($FromArray[1]!="") { $FromSelectArray = explode("select ",$FromArray[0]); $SQLArray['SelectText'] = $FromSelectArray[1]; $FromWhereArray = explode(" where ",$FromArray[1]); $SQLArray['FromText'] = $FromWhereArray[0]; //如果是两个表,直接返回,不做处理 $FromTablesArray = explode(",",$SQLArray['FromText']); if($FromTablesArray[1]!='') { print "两个表"; return $sql; } //拆分数据库和表 $FromDBArray = explode(".",$SQLArray['FromText']); if($FromDBArray[1]!="") { $SQLArray['FromText'] = $FromDBArray[1]; $SQLArray['DBText'] = $FromDBArray[0]; } $SQLArray['WhereText'] = $FromWhereArray[1]; $FromOrderByArray = explode(" order by ",$SQLArray['WhereText']); if($FromOrderByArray[1]!="") { $SQLArray['WhereText'] = $FromOrderByArray[0]; $SQLArray['OrderByText']= $FromOrderByArray[1]; } } //处理新的SQL,之前要进行判断表自定义表是否存在 $TABLENAME = $SQLArray['FromText']; $TABLENAME2 = "view_".$TABLENAME; if(in_array($TABLENAME2,$MetaTables)) { //自定义表存在 $MetaColumnNames = $db->MetaColumnNames($TABLENAME); $MetaColumnNames = array_keys($MetaColumnNames); $原表主键 = $MetaColumnNames[0]; $MetaColumnNames2 = $db->MetaColumnNames($TABLENAME2); $MetaColumnNames2 = array_keys($MetaColumnNames2); $新表主键 = $MetaColumnNames2[0]; array_shift($MetaColumnNames2); $自定义表字段列表 = join(',',$MetaColumnNames2); $SQLArray['SelectText'] .= ",".$自定义表字段列表; $SQLArray['FromText'] .= ",".$TABLENAME2; if($SQLArray['WhereText']!="") { $SQLArray['WhereText'] .= " and ".$TABLENAME.".".$原表主键."=".$TABLENAME2.".".$新表主键.""; } else { $SQLArray['WhereText'] = " ".$TABLENAME.".".$原表主键."=".$TABLENAME2.".".$新表主键.""; } } else { //不存在,直接返回 return $sql; } //形成新的SQL文件 $NEWTEXTSQL = "select ".$SQLArray['SelectText']." from ".$SQLArray['FromText'].""; if(TRIM($SQLArray['WhereText'])!="") { $NEWTEXTSQL .=" where ".$SQLArray['WhereText']; } if(TRIM($SQLArray['OrderByText'])!="") { $NEWTEXTSQL .=" order by ".$SQLArray['WhereText']; } //形成后返回 return $NEWTEXTSQL; //SELECT 部分结束 } //UPDATE //DELETE //INSERT INTO print_R($NEWTEXTSQL); print_R($SQLArray); }
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章
倉庫:如何復興隊友
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
1 個月前By尊渡假赌尊渡假赌尊渡假赌
擊敗分裂小說需要多長時間?
4 週前ByDDD
R.E.P.O.保存文件位置:在哪里以及如何保護它?
4 週前ByDDD

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

Atom編輯器mac版下載
最受歡迎的的開源編輯器

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。