|
@@ -1328,8 +1328,8 @@ class Database {
|
|
|
* @todo lot of stuff to do here
|
|
|
*/
|
|
|
|
|
|
- public static function find($table_name, $columns = '*' , $where_conditions = array(), $option = 'ASSOC') {
|
|
|
- $where_return = self::parse_where_conditions($where_conditions);
|
|
|
+ public static function select($columns = '*' , $table_name, $conditions = array(), $option = 'ASSOC') {
|
|
|
+ $conditions = self::parse_conditions($conditions);
|
|
|
$clean_columns = '';
|
|
|
if (is_array($columns)) {
|
|
|
$clean_columns = implode(',', $columns);
|
|
@@ -1339,54 +1339,71 @@ class Database {
|
|
|
} else {
|
|
|
$clean_columns = (string)$columns;
|
|
|
}
|
|
|
- }
|
|
|
- $sql = "SELECT $clean_columns FROM $table_name $where_return ";
|
|
|
- $result = self::query($sql);
|
|
|
-
|
|
|
- $array = array();
|
|
|
- if ($result !== false) {
|
|
|
+ }
|
|
|
+
|
|
|
+ $sql = "SELECT $clean_columns FROM $table_name $conditions";
|
|
|
+ $result = self::query($sql);
|
|
|
+ $array = array();
|
|
|
+ if (self::num_rows($result) > 1 ) {
|
|
|
while ($row = self::fetch_array($result, $option)) {
|
|
|
if (isset($row['id'])) {
|
|
|
$array[$row['id']] = $row;
|
|
|
} else {
|
|
|
$array[] = $row;
|
|
|
}
|
|
|
- }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ $array = self::fetch_array($result, $option);
|
|
|
}
|
|
|
return $array;
|
|
|
}
|
|
|
|
|
|
|
|
|
- * Parses where conditionsof this form: array('id = ?' =>'4')
|
|
|
+ * Parses WHERE/ORDER conditions i.e array('where'=>array('id = ?' =>'4'), 'order'=>'id DESC'))
|
|
|
+ * @param array
|
|
|
* @todo lot of stuff to do here
|
|
|
*/
|
|
|
- private function parse_where_conditions($conditions) {
|
|
|
+ private function parse_conditions($conditions) {
|
|
|
if (empty($conditions)) {
|
|
|
return '';
|
|
|
}
|
|
|
- $where_return = '';
|
|
|
- foreach ($conditions as $condition => $value_array) {
|
|
|
- if (is_array($value_array)) {
|
|
|
- $clean_values = array();
|
|
|
- foreach($value_array as $item) {
|
|
|
- $item = Database::escape_string($item);
|
|
|
- $clean_values[]= "'$item'";
|
|
|
- }
|
|
|
- } else {
|
|
|
- $value_array = Database::escape_string($value_array);
|
|
|
- $clean_values = "'$value_array'";
|
|
|
- }
|
|
|
- if (!empty($condition) && !empty($clean_values)) {
|
|
|
- $condition = str_replace('?','%s', $condition);
|
|
|
- $condition = vsprintf($condition, $clean_values);
|
|
|
- $where_return .= $condition;
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
- if (!empty($where_return)) {
|
|
|
- $where_return = " WHERE $where_return ";
|
|
|
+ $return_value = '';
|
|
|
+ foreach ($conditions as $type_condition => $condition_data) {
|
|
|
+ switch($type_condition) {
|
|
|
+ case 'where':
|
|
|
+ foreach ($condition_data as $condition => $value_array) {
|
|
|
+ if (is_array($value_array)) {
|
|
|
+ $clean_values = array();
|
|
|
+ foreach($value_array as $item) {
|
|
|
+ $item = Database::escape_string($item);
|
|
|
+ $clean_values[]= "'$item'";
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ $value_array = Database::escape_string($value_array);
|
|
|
+ $clean_values = "'$value_array'";
|
|
|
+ }
|
|
|
+ if (!empty($condition) && !empty($clean_values)) {
|
|
|
+ $condition = str_replace('?','%s', $condition);
|
|
|
+ $condition = vsprintf($condition, $clean_values);
|
|
|
+ $where_return .= $condition;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!empty($where_return)) {
|
|
|
+ $return_value = " WHERE $where_return" ;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 'order':
|
|
|
+ $return_value .= " ORDER BY $condition_data";
|
|
|
+ break;
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
- return $where_return;
|
|
|
+ return $return_value;
|
|
|
+ }
|
|
|
+
|
|
|
+ private function parse_where_conditions($coditions){
|
|
|
+ return self::parse_conditions(array('where'=>$coditions));
|
|
|
}
|
|
|
|
|
|
|