Ik ben nu al een tijdje bezig met een stukje code. Ik pas een content management systeem aan op interbase. Alleen interbase heeft preserved words. Dus text kan niet als kolomnaam gebruikt worden. Aangezien dat wel bij mysql kan worden die queries rustig gebruikt in de code van het content management systeem. Ik moet dus de querys omvormen zodat er om de kolomnamen en om de tabelnamen quotes komen te staan.
Ik zal ff een voorbeeld laten zien:
De functie ziet er zo uit:
Dus alleen de where string moet aangepast te worden. Ik heb de volgende code gemaakt en dat werkt op zich wel:
Hoe zou ik mijn code kunnen verbeteren zodat het een minder grote lap code is??
Mij lukt het na een middag prutsen niet beter..
Ik zal ff een voorbeeld laten zien:
code:
1
2
3
| WHERE lala > 'where' AND dinges => lala wordt: WHERE "lala" > 'where' AND "dinges" => "lala" |
De functie ziet er zo uit:
PHP:
1
2
3
| function selectObjects($table,$where = null) { } |
Dus alleen de where string moet aangepast te worden. Ik heb de volgende code gemaakt en dat werkt op zich wel:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| $query = "WHERE lala > 'where' AND dinges => lala "; //remove the values between quotes $test = preg_replace("/\'[A-Za-z]+\'/","",$query); //remove all sql stuff $test = preg_replace("(where|WHERE|or|OR|and|AND)","",$test); //remove all compare operators $test = preg_replace("/ (=!|!=|=<|=>|<=|>=|<|>|=)/" , "",$test); //split all column and table names into seperate strings and add them to the array $keywords = array_unique(preg_split("/[\s,]+/",$test)); //replace quoted tablenames and column names in the original query foreach( $keywords as $value ){ $query = str_replace($value,"\"".$value."\"",$query); } echo $query; |
Hoe zou ik mijn code kunnen verbeteren zodat het een minder grote lap code is??
[ Voor 22% gewijzigd door HawVer op 15-03-2005 16:20 ]
http://hawvie.deviantart.com/