_result = FALSE; $this->_lastQuery = $query; if ($controller) { $controller = strtoupper(substr($controller, 0, self::REDIS_CONTROLLER_KEY_MAX_LENGTH)); } if ($use_cache && $controller && class_exists('CacheRedis')) { if (FALSE !== ($result = CacheRedis::getInstance()->getQuery($query, $controller))) { return $result; } } if ($this->_link && $this->_result = mysql_query($query, $this->_link)) { $this->_lastCached = FALSE; if (_PS_DEBUG_SQL_) { $this->displayMySQLError($query); } $resultArray = array(); // Only SELECT queries and a few others return a valid resource usable with mysql_fetch_assoc if ($this->_result !== TRUE) { while ($row = mysql_fetch_assoc($this->_result)) { $resultArray[] = $row; } } if ($use_cache && $controller && class_exists('CacheRedis')) { CacheRedis::getInstance()->setQuery($query, $controller, $resultArray, $cache_expire); } return $resultArray; } if (_PS_DEBUG_SQL_) { $this->displayMySQLError($query); } return array(); } /** * ExecuteS return the result of $query as array, * or as mysqli_result if $array set to FALSE * * @param string $query query to execute * @param boolean $array return an array instead of a mysql_result object * @param bool|int $use_cache if query has been already executed, use its result * @param string|bool $controller name used to limit cache collision * @return array or result object */ public function ExecuteS($query, $array = TRUE, $use_cache = FALSE, $controller = FALSE, $cache_expire = null) { $this->_result = FALSE; $this->_lastQuery = $query; if ($controller) { $controller = strtoupper(substr($controller, 0, self::REDIS_CONTROLLER_KEY_MAX_LENGTH)); } if ($use_cache && $controller && class_exists('CacheRedis')) { if (FALSE !== ($result = CacheRedis::getInstance()->getQuery($query, $controller))) { return $result; } } if ($this->_link && $this->_result = mysql_query($query, $this->_link)) { $this->_lastCached = FALSE; if (_PS_DEBUG_SQL_) { $this->displayMySQLError($query); } if (!$array) { return $this->_result; } $resultArray = array(); // Only SELECT queries and a few others return a valid resource usable with mysql_fetch_assoc if ($this->_result !== TRUE) { while ($row = mysql_fetch_assoc($this->_result)) { $resultArray[] = $row; } } if ($use_cache && $controller && class_exists('CacheRedis')) { CacheRedis::getInstance()->setQuery($query, $controller, $resultArray, $cache_expire); } return $resultArray; } if (_PS_DEBUG_SQL_) { $this->displayMySQLError($query); } return FALSE; } public function getRow($query, $use_cache = FALSE, $controller = FALSE, $cache_expire = null) { $query .= ' LIMIT 1'; $this->_result = FALSE; $this->_lastQuery = $query; if ($controller) { $controller = strtoupper(substr($controller, 0, self::REDIS_CONTROLLER_KEY_MAX_LENGTH)); } if ($use_cache && $controller && class_exists('CacheRedis')) { if (FALSE !== ($result = CacheRedis::getInstance()->getQuery($query, $controller))) { return $result; } } if ($this->_link) { if ($this->_result = mysql_query($query, $this->_link)) { $this->_lastCached = FALSE; if (_PS_DEBUG_SQL_) { $this->displayMySQLError($query); } $result = mysql_fetch_assoc($this->_result); if ($use_cache && $controller && class_exists('CacheRedis')) { CacheRedis::getInstance()->setQuery($query, $controller, $result, $cache_expire); } return $result; } } if (_PS_DEBUG_SQL_) { $this->displayMySQLError($query); } return FALSE; } }