Sfoglia il codice sorgente

Fixing database::parse_conditions to accept likes and simple conditions

Julio Montoya 13 anni fa
parent
commit
b43ee64783
2 ha cambiato i file con 18 aggiunte e 9 eliminazioni
  1. 8 4
      main/inc/lib/database.lib.php
  2. 10 5
      main/inc/lib/database.mysqli.lib.php

+ 8 - 4
main/inc/lib/database.lib.php

@@ -1203,14 +1203,18 @@ class Database {
                             $clean_values = $value_array;                            
                         }
                        
-                        if (!empty($condition) && $clean_values != '') {                                                        
+                        if (!empty($condition) && $clean_values != '') {                                                                                      
                             $condition = str_replace('%',"'@percentage@'", $condition); //replace "%"
                             $condition = str_replace("'?'","%s", $condition);
                             $condition = str_replace("?","%s", $condition);
-                            //Treat conditons as string
+                            
+                            $condition = str_replace("@%s@","@-@", $condition);
                             $condition = str_replace("%s","'%s'", $condition);
-                            $condition = vsprintf($condition, $clean_values);                            
-                            $condition = str_replace('@percentage@','%', $condition); //replace "%"
+                            $condition = str_replace("@-@","@%s@", $condition);
+                            
+                            //Treat conditons as string                            
+                            $condition = vsprintf($condition, $clean_values);                                                        
+                            $condition = str_replace('@percentage@','%', $condition); //replace "%"                            
                             $where_return .= $condition;
                         }
                     }

+ 10 - 5
main/inc/lib/database.mysqli.lib.php

@@ -1138,16 +1138,21 @@ class Database {
                             $value_array = Database::escape_string($value_array);
                             $clean_values = $value_array;
                         }
-                        if (!empty($condition) && $clean_values != '') {
+                        if (!empty($condition) && $clean_values != '') {                                                                                      
                             $condition = str_replace('%',"'@percentage@'", $condition); //replace "%"
                             $condition = str_replace("'?'","%s", $condition);
                             $condition = str_replace("?","%s", $condition);
-                            //Treat conditons as string
+                            
+                            $condition = str_replace("@%s@","@-@", $condition);
                             $condition = str_replace("%s","'%s'", $condition);
-                            $condition = vsprintf($condition, $clean_values);                            
-                            $condition = str_replace('@percentage@','%', $condition); //replace "%"
+                            $condition = str_replace("@-@","@%s@", $condition);
+                            
+                            //Treat conditons as string                            
+                            $condition = vsprintf($condition, $clean_values);                                                        
+                            $condition = str_replace('@percentage@','%', $condition); //replace "%"                            
                             $where_return .= $condition;
-                        }                    }
+                        }                 
+                    }
                     if (!empty($where_return)) {
                         $return_value = " WHERE $where_return" ;
                     }