]> git.mxchange.org Git - friendica.git/blobdiff - include/dba.php
Replace dba::select(limit => 1) by dba::selectOne
[friendica.git] / include / dba.php
index 391a6fcf72221d9f9aab303a8a607d16754031d8..3a72d596491741a6b3928ffbfb1c7fe74d488780 100644 (file)
@@ -572,7 +572,7 @@ class dba {
                        $fields = array($array_key);
                }
 
-               $stmt = self::select($table, $fields, $condition, array('limit' => 1, 'only_query' => true));
+               $stmt = self::select($table, $fields, $condition, ['limit' => 1]);
 
                if (is_bool($stmt)) {
                        $retval = $stmt;
@@ -1046,7 +1046,7 @@ class dba {
                if (is_bool($old_fields)) {
                        $do_insert = $old_fields;
 
-                       $old_fields = self::select($table, array(), $condition, array('limit' => 1));
+                       $old_fields = self::selectOne($table, [], $condition);
 
                        if (is_bool($old_fields)) {
                                if ($do_insert) {
@@ -1083,6 +1083,31 @@ class dba {
                return self::e($sql, $params);
        }
 
+       /**
+        * Retrieve a single record from a table and returns it in an associative array
+        * 
+        * @brief Retrieve a single record from a table
+        * @param string $table
+        * @param array  $fields
+        * @param array  $condition
+        * @param array  $params
+        * @return bool|array
+        * @see dba::select
+        */
+       public static function selectOne($table, array $fields = [], array $condition = [], $params = [])
+       {
+               $params['limit'] = 1;
+               $result = self::select($table, $fields, $condition, $params);
+
+               if (is_bool($result)) {
+                       return $result;
+               } else {
+                       $row = self::fetch($result);
+                       self::close($result);
+                       return $row;
+               }
+       }
+
        /**
         * @brief Select rows from a table
         *
@@ -1112,53 +1137,38 @@ class dba {
                }
 
                if (count($fields) > 0) {
-                       $select_fields = "`".implode("`, `", array_values($fields))."`";
+                       $select_fields = "`" . implode("`, `", array_values($fields)) . "`";
                } else {
                        $select_fields = "*";
                }
 
                $condition_string = self::buildCondition($condition);
 
-               $param_string = '';
-               $single_row = false;
-
                if (isset($params['order'])) {
-                       $param_string .= " ORDER BY ";
+                       $order_string = " ORDER BY ";
                        foreach ($params['order'] AS $fields => $order) {
                                if (!is_int($fields)) {
-                                       $param_string .= "`".$fields."` ".($order ? "DESC" : "ASC").", ";
+                                       $order_string .= "`" . $fields . "` " . ($order ? "DESC" : "ASC") . ", ";
                                } else {
-                                       $param_string .= "`".$order."`, ";
+                                       $order_string .= "`" . $order . "`, ";
                                }
                        }
-                       $param_string = substr($param_string, 0, -2);
+                       $order_string = substr($order_string, 0, -2);
                }
 
                if (isset($params['limit']) && is_int($params['limit'])) {
-                       $param_string .= " LIMIT ".$params['limit'];
-                       $single_row = ($params['limit'] == 1);
+                       $limit_string = " LIMIT " . $params['limit'];
                }
 
                if (isset($params['limit']) && is_array($params['limit'])) {
-                       $param_string .= " LIMIT ".intval($params['limit'][0]).", ".intval($params['limit'][1]);
-                       $single_row = ($params['limit'][1] == 1);
+                       $limit_string = " LIMIT " . intval($params['limit'][0]) . ", " . intval($params['limit'][1]);
                }
 
-               if (isset($params['only_query']) && $params['only_query']) {
-                       $single_row = !$params['only_query'];
-               }
-
-               $sql = "SELECT ".$select_fields." FROM `".$table."`".$condition_string.$param_string;
+               $sql = "SELECT " . $select_fields . " FROM `" . $table . "`" . $condition_string . $order_string . $limit_string;
 
                $result = self::p($sql, $condition);
 
-               if (is_bool($result) || !$single_row) {
-                       return $result;
-               } else {
-                       $row = self::fetch($result);
-                       self::close($result);
-                       return $row;
-               }
+               return $result;
        }
 
        /**