Results 1 to 2 of 2
  1. #1
    Join Date
    Jun 2009
    Posts
    9
    Plugin Contributions
    0

    Default There is a PHP Fatal error in my V151 Logs ,how to fix it?

    Code:
    Fatal error: 1062:Duplicate entry 'zc_5b59d6056591802fdad6619320d81905' for key 'PRIMARY' :: insert into db_cache set cache_entry_name = 'zc_5b59d6056591802fdad6619320d81905', cache_data = ' There r many wrong codes like: (YTo5MDM0OntpOjA7YToyOgV2hvbGVzYWxlIFJ1cmFsIFdpbmQ)', cache_entry_created = '1368186265' in /home/zch0071/domains/infashionwholesale.com/public_html/includes/classes/db/mysql/query_factory.php on line 120
    My server info:
    Code:
    Server OS: Linux 3.2.0-2-686-pae   	Database: MySQL 5.1.66-0+squeeze1
    Server Date: 05/10/2013 17:14:39  	Database Date: 05/10/2013 07:14:39
    Server Up Time: 07:14:39 up 20 days, 2:40, 1 user, load average: 1.39, 0.95, 1.00	HTTP Server: Apache/2.2.22 (Debian)
    PHP Version: 5.4.0-3 (Zend: 2.4.0)   PHP Memory Limit: 128M	PHP Safe Mode: Off
    PHP File Uploads: On    Max Size: 2M	POST Max Size: 8M
    Database Data Size: 156,131 kB	Database Index Size: 18,226 kB
    this is my website query_factory.php code. How can i fix them?
    Code:
    <?php
    /**
     * MySQL query_factory Class.
     * Class used for database abstraction to MySQL
     *
     * @package classes
     * @copyright Copyright 2003-2012 Zen Cart Development Team
     * @copyright Portions Copyright 2003 osCommerce
     * @copyright http://www.data-diggers.com/
     * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0
     * @version GIT: $Id: Author: Ian Wilson  Wed Jul 4 14:44:03 2012 +0100 Modified in v1.5.1 $
     */
    if (!defined('IS_ADMIN_FLAG')) {
      die('Illegal Access');
    }
    /**
     * Queryfactory - A simple database abstraction layer
     *
     */
    class queryFactory extends base {
      var $link, $count_queries, $total_query_time;
    
      function queryFactory() {
        $this->count_queries = 0;
        $this->total_query_time = 0;
      }
    
      function query($query, $link) {
          global $queryLog;
          global $queryCache;
    
          $this->total_queries++;
          if(isset($queryCache) && $queryCache->inCache($query)) {
                $cached_value = $queryCache->getFromCache($query);
                $this->count_queries--;
                return($cached_value);
          }
    
          if(isset($queryLog)) $queryLog->start($query);
          $result = mysql_query($query, $link);
          if(isset($queryLog)) $queryLog->stop($query, $result);
          if(isset($queryCache)) $queryCache->cache($query, $result);
          return($result);
      }
    
      function connect($zf_host, $zf_user, $zf_password, $zf_database, $zf_pconnect = 'false', $zp_real = false) {
        $this->database = $zf_database;
        $this->user = $zf_user;
        $this->host = $zf_host;
        $this->password = $zf_password;
        $this->pConnect = $zf_pconnect;
        $this->real = $zp_real;
        if (!function_exists('mysql_connect')) die ('Call to undefined function: mysql_connect().  Please install the MySQL Connector for PHP');
        $connectionRetry = 10;
        while (!isset($this->link) || ($this->link == FALSE && $connectionRetry !=0) )
        {
          $this->link = @mysql_connect($zf_host, $zf_user, $zf_password, true);
          $connectionRetry--;
        }
        if ($this->link) {
          if (@mysql_select_db($zf_database, $this->link)) {
            if (defined('DB_CHARSET') && version_compare(@mysql_get_server_info(), '4.1.0', '>=')) {
              @mysql_query("SET NAMES '" . DB_CHARSET . "'", $this->link);
              if (function_exists('mysql_set_charset')) {
                @mysql_set_charset(DB_CHARSET, $this->link);
              } else {
                @mysql_query("SET CHARACTER SET '" . DB_CHARSET . "'", $this->link);
              }
            }
            $this->db_connected = true;
            if (getenv('TZ') && !defined('DISABLE_MYSQL_TZ_SET')) @mysql_query("SET time_zone = '" . substr_replace(date("O"),":",-2,0) . "'", $this->link);
            return true;
          } else {
            $this->set_error(mysql_errno(),mysql_error(), $zp_real);
            return false;
          }
        } else {
          $this->set_error(mysql_errno(),mysql_error(), $zp_real);
          return false;
        }
      }
    
      function selectdb($zf_database) {
        @mysql_select_db($zf_database, $this->link);
      }
    
      function prepare_input($zp_string) {
        if (function_exists('mysql_real_escape_string')) {
          return mysql_real_escape_string($zp_string, $this->link);
        } elseif (function_exists('mysql_escape_string')) {
          return mysql_escape_string($zp_string, $this->link);
        } else {
          return addslashes($zp_string);
        }
      }
    
      function close() {
        @mysql_close($this->link);
      }
    
      function set_error($zp_err_num, $zp_err_text, $zp_fatal = true) {
        $this->error_number = $zp_err_num;
        $this->error_text = $zp_err_text;
        if ($zp_fatal && $zp_err_num != 1141) { // error 1141 is okay ... should not die on 1141, but just continue on instead
          $this->show_error();
          die();
        }
      }
    
      function show_error() {
        if ($this->error_number == 0 && $this->error_text == DB_ERROR_NOT_CONNECTED && !headers_sent() && file_exists('nddbc.html') ) include('nddbc.html');
        echo '<div class="systemError">';
        if (defined('STRICT_ERROR_REPORTING') && STRICT_ERROR_REPORTING == true)
        {
          echo $this->error_number . ' ' . $this->error_text;
          echo '<br />in:<br />[' . (strstr($this->zf_sql, 'db_cache') ? 'db_cache table' : $this->zf_sql) . ']<br />';
        } else {
          echo 'WARNING: An Error occurred, please refresh the page and try again.';
        }
        trigger_error($this->error_number . ':' . $this->error_text . ' :: ' . $this->zf_sql, E_USER_ERROR);
        if (defined('IS_ADMIN_FLAG') && IS_ADMIN_FLAG==true) echo 'If you were entering information, press the BACK button in your browser and re-check the information you had entered to be sure you left no blank fields.<br />';
        echo '</div>';
      }
    
      function Execute($zf_sql, $zf_limit = false, $zf_cache = false, $zf_cachetime=0) {
        // bof: collect database queries
        if (defined('STORE_DB_TRANSACTIONS') && STORE_DB_TRANSACTIONS=='true') {
          global $PHP_SELF, $box_id, $current_page_base;
          if (strtoupper(substr($zf_sql,0,6))=='SELECT' /*&& strstr($zf_sql,'products_id')*/) {
            $f=@fopen(DIR_FS_SQL_CACHE.'/query_selects_' . $current_page_base . '_' . time() . '.txt','a');
            if ($f) {
              fwrite($f,  "\n\n" . 'I AM HERE ' . $current_page_base . /*zen_get_all_get_params() .*/ "\n" . 'sidebox: ' . $box_id . "\n\n" . "Explain \n" . $zf_sql.";\n\n");
              fclose($f);
            }
            unset($f);
          }
        }
        // eof: collect products_id queries
        global $zc_cache;
        if ($zf_limit) {
          $zf_sql = $zf_sql . ' LIMIT ' . $zf_limit;
        }
        $this->zf_sql = $zf_sql;
        if($zf_cache AND $zc_cache->sql_cache_exists($zf_sql, $zf_cachetime)) {
          $obj = new queryFactoryResult;
          $obj->cursor = 0;
          $obj->is_cached = true;
          $obj->sql_query = $zf_sql;
          $zp_result_array = $zc_cache->sql_cache_read($zf_sql);
          $obj->result = $zp_result_array;
          if (sizeof($zp_result_array) > 0 ) {
            $obj->EOF = false;
            while (list($key, $value) = each($zp_result_array[0])) {
              $obj->fields[$key] = $value;
            }
          } else {
            $obj->EOF = true;
          }
          return $obj;
        } elseif ($zf_cache) {
          $zc_cache->sql_cache_expire_now($zf_sql);
          $time_start = explode(' ', microtime());
          $obj = new queryFactoryResult;
          $obj->sql_query = $zf_sql;
          if (!$this->db_connected)
          {
            if (!$this->connect($this->host, $this->user, $this->password, $this->database, $this->pConnect, $this->real))
            $this->set_error('0', DB_ERROR_NOT_CONNECTED);
          }
          $zp_db_resource = @$this->query($zf_sql, $this->link);
          if (!$zp_db_resource) $this->set_error(@mysql_errno(),@mysql_error());
          if(!is_resource($zp_db_resource)){
            $obj = null;
            return true;
          }
          $obj->resource = $zp_db_resource;
          $obj->cursor = 0;
          if ($obj->RecordCount() > 0) {
            $obj->EOF = false;
            $zp_ii = 0;
            while (!$obj->EOF) {
              $zp_result_array = @mysql_fetch_array($zp_db_resource);
              if ($zp_result_array) {
                while (list($key, $value) = each($zp_result_array)) {
                  if (!preg_match('/^[0-9]/', $key)) {
                    $obj->result[$zp_ii][$key] = $value;
                  }
                }
              } else {
                $obj->Limit = $zp_ii;
                $obj->EOF = true;
              }
              $zp_ii++;
            }
            while (list($key, $value) = each($obj->result[$obj->cursor])) {
              if (!preg_match('/^[0-9]/', $key)) {
                $obj->fields[$key] = $value;
              }
            }
            $obj->EOF = false;
          } else {
            $obj->EOF = true;
          }
          $obj->is_cached = true;
          $zc_cache->sql_cache_store($zf_sql, $obj->result);
          $time_end = explode (' ', microtime());
          $query_time = $time_end[1]+$time_end[0]-$time_start[1]-$time_start[0];
          $this->total_query_time += $query_time;
          $this->count_queries++;
          return($obj);
        } else {
          $time_start = explode(' ', microtime());
          $obj = new queryFactoryResult;
          if (!$this->db_connected)
          {
            if (!$this->connect($this->host, $this->user, $this->password, $this->database, $this->pConnect, $this->real))
            $this->set_error('0', DB_ERROR_NOT_CONNECTED);
          }
          $zp_db_resource = @$this->query($zf_sql, $this->link);
          if (!$zp_db_resource) {
            if (@mysql_errno($this->link) == 2006) {
              $this->link = FALSE;
              $this->connect($this->host, $this->user, $this->password, $this->database, $this->pConnect, $this->real);
              $zp_db_resource = @mysql_query($zf_sql, $this->link);
            }
            if (!$zp_db_resource) {
              $this->set_error(@mysql_errno($this->link),@mysql_error($this->link));
            }
          }
          if(!is_resource($zp_db_resource)){
            $obj = null;
            return true;
          }
          $obj->resource = $zp_db_resource;
          $obj->cursor = 0;
          if ($obj->RecordCount() > 0) {
            $obj->EOF = false;
            $zp_result_array = @mysql_fetch_array($zp_db_resource);
            if ($zp_result_array) {
              while (list($key, $value) = each($zp_result_array)) {
                if (!preg_match('/^[0-9]/', $key)) {
                  $obj->fields[$key] = $value;
                }
              }
              $obj->EOF = false;
            } else {
              $obj->EOF = true;
            }
          } else {
            $obj->EOF = true;
          }
    
          $time_end = explode (' ', microtime());
          $query_time = $time_end[1]+$time_end[0]-$time_start[1]-$time_start[0];
          $this->total_query_time += $query_time;
          $this->count_queries++;
          return($obj);
        }
      }
    
      function ExecuteRandomMulti($zf_sql, $zf_limit = 0, $zf_cache = false, $zf_cachetime=0) {
        $this->zf_sql = $zf_sql;
        $time_start = explode(' ', microtime());
        $obj = new queryFactoryResult;
        $obj->result = array();
        if (!$this->db_connected)
        {
          if (!$this->connect($this->host, $this->user, $this->password, $this->database, $this->pConnect, $this->real))
          $this->set_error('0', DB_ERROR_NOT_CONNECTED);
        }
        $zp_db_resource = @$this->query($zf_sql, $this->link);
        if (!$zp_db_resource) $this->set_error(mysql_errno(),mysql_error());
        if(!is_resource($zp_db_resource)){
          $obj = null;
          return true;
        }
        $obj->resource = $zp_db_resource;
        $obj->cursor = 0;
        $obj->Limit = $zf_limit;
        if ($obj->RecordCount() > 0 && $zf_limit > 0) {
          $obj->EOF = false;
          $zp_Start_row = 0;
          if ($zf_limit) {
          $zp_start_row = zen_rand(0, $obj->RecordCount() - $zf_limit);
          }
          $obj->Move($zp_start_row);
          $obj->Limit = $zf_limit;
          $zp_ii = 0;
          while (!$obj->EOF) {
            $zp_result_array = @mysql_fetch_array($zp_db_resource);
            if ($zp_ii == $zf_limit) $obj->EOF = true;
            if ($zp_result_array) {
              while (list($key, $value) = each($zp_result_array)) {
                $obj->result[$zp_ii][$key] = $value;
              }
            } else {
              $obj->Limit = $zp_ii;
              $obj->EOF = true;
            }
            $zp_ii++;
          }
          $obj->result_random = array_rand($obj->result, sizeof($obj->result));
          if (is_array($obj->result_random)) {
            $zp_ptr = $obj->result_random[$obj->cursor];
          } else {
            $zp_ptr = $obj->result_random;
          }
          while (list($key, $value) = each($obj->result[$zp_ptr])) {
            if (!preg_match('/^[0-9]/', $key)) {
              $obj->fields[$key] = $value;
            }
          }
          $obj->EOF = false;
        } else {
          $obj->EOF = true;
        }
    
        $time_end = explode (' ', microtime());
        $query_time = $time_end[1]+$time_end[0]-$time_start[1]-$time_start[0];
        $this->total_query_time += $query_time;
        $this->count_queries++;
        return($obj);
      }
    
      function insert_ID() {
        return @mysql_insert_id($this->link);
      }
    
      function metaColumns($zp_table) {
        $sql = "SHOW COLUMNS from :tableName:";
        $sql = $this->bindVars($sql, ':tableName:', $zp_table, 'noquotestring');
        $res = $this->execute($sql);
        while (!$res->EOF)
        {
          $obj [strtoupper($res->fields['Field'])] = new queryFactoryMeta($res->fields);
          $res->MoveNext();
        }
        return $obj;
      }
    
      function get_server_info() {
        if ($this->link) {
          return mysql_get_server_info($this->link);
        } else {
          return UNKNOWN;
        }
      }
    
      function queryCount() {
        return $this->count_queries;
      }
    
      function queryTime() {
        return $this->total_query_time;
      }
    
      function perform ($tableName, $tableData, $performType='INSERT', $performFilter='', $debug=false) {
        switch (strtolower($performType)) {
          case 'insert':
          $insertString = "";
          $insertString = "INSERT INTO " . $tableName . " (";
          foreach ($tableData as $key => $value) {
            if ($debug === true) {
              echo $value['fieldName'] . '#';
            }
            $insertString .= $value['fieldName'] . ", ";
          }
          $insertString = substr($insertString, 0, strlen($insertString)-2) . ') VALUES (';
          reset($tableData);
          foreach ($tableData as $key => $value) {
            $bindVarValue = $this->getBindVarValue($value['value'], $value['type']);
            $insertString .= $bindVarValue . ", ";
          }
          $insertString = substr($insertString, 0, strlen($insertString)-2) . ')';
          if ($debug === true) {
            echo $insertString;
            die();
          } else {
            $this->execute($insertString);
          }
          break;
          case 'update':
          $updateString ="";
          $updateString = 'UPDATE ' . $tableName . ' SET ';
          foreach ($tableData as $key => $value) {
            $bindVarValue = $this->getBindVarValue($value['value'], $value['type']);
            $updateString .= $value['fieldName'] . '=' . $bindVarValue . ', ';
          }
          $updateString = substr($updateString, 0, strlen($updateString)-2);
          if ($performFilter != '') {
            $updateString .= ' WHERE ' . $performFilter;
          }
          if ($debug === true) {
            echo $updateString;
            die();
          } else {
            $this->execute($updateString);
          }
          break;
        }
      }
      function getBindVarValue($value, $type) {
        $typeArray = explode(':',$type);
        $type = $typeArray[0];
        switch ($type) {
          case 'csv':
            return $value;
          break;
          case 'passthru':
            return $value;
          break;
          case 'float':
            return (!zen_not_null($value) || $value=='' || $value == 0) ? 0 : $value;
          break;
          case 'integer':
            return (int)$value;
          break;
          case 'string':
            if (isset($typeArray[1])) {
              $regexp = $typeArray[1];
            }
            return '\'' . $this->prepare_input($value) . '\'';
          break;
          case 'noquotestring':
            return $this->prepare_input($value);
          break;
          case 'currency':
            return '\'' . $this->prepare_input($value) . '\'';
          break;
          case 'date':
            return '\'' . $this->prepare_input($value) . '\'';
          break;
          case 'enum':
            if (isset($typeArray[1])) {
              $enumArray = explode('|', $typeArray[1]);
            }
            return '\'' . $this->prepare_input($value) . '\'';
          case 'regexp':
            $searchArray = array('[', ']', '(', ')', '{', '}', '|', '*', '?', '.', '$', '^');
            foreach ($searchArray as $searchTerm) {
              $value = str_replace($searchTerm, '\\' . $searchTerm, $value);
            }
            return $this->prepare_input($value);
          default:
          die('var-type undefined: ' . $type . '('.$value.')');
        }
      }
    /**
     * method to do bind variables to a query
    **/
      function bindVars($sql, $bindVarString, $bindVarValue, $bindVarType, $debug = false) {
        $bindVarTypeArray = explode(':', $bindVarType);
        $sqlNew = $this->getBindVarValue($bindVarValue, $bindVarType);
        $sqlNew = str_replace($bindVarString, $sqlNew, $sql);
        return $sqlNew;
      }
    
      function prepareInput($string) {
        return $this->prepare_input($string);
      }
    }
    
    class queryFactoryResult {
    
      function queryFactoryResult() {
        $this->is_cached = false;
      }
    
      function MoveNext() {
        global $zc_cache;
        $this->cursor++;
        if ($this->is_cached) {
          if ($this->cursor >= sizeof($this->result)) {
            $this->EOF = true;
          } else {
            while(list($key, $value) = each($this->result[$this->cursor])) {
              $this->fields[$key] = $value;
            }
          }
        } else {
          $zp_result_array = @mysql_fetch_array($this->resource);
          if (!$zp_result_array) {
            $this->EOF = true;
          } else {
            while (list($key, $value) = each($zp_result_array)) {
              if (!preg_match('/^[0-9]/', $key)) {
                $this->fields[$key] = $value;
              }
            }
          }
        }
      }
    
      function MoveNextRandom() {
        $this->cursor++;
        if ($this->cursor < $this->Limit) {
          $zp_result_array = $this->result[$this->result_random[$this->cursor]];
          while (list($key, $value) = each($zp_result_array)) {
            if (!preg_match('/^[0-9]/', $key)) {
              $this->fields[$key] = $value;
            }
          }
        } else {
          $this->EOF = true;
        }
      }
    
      function RecordCount() {
        if ($this->is_cached)
    	  return sizeof($this->result);
      	return @mysql_num_rows($this->resource);
      }
    
      function Move($zp_row) {
        global $db;
    	if ($this->is_cached) {
        	if($zp_row >= sizeof($this->result)) {
        		$this->cursor = sizeof($this->result);
        		$this->EOF = true;
        	}
        	else {
        		$this->cursor = $zp_row;
        		while(list($key, $value) = each($this->result[$this->cursor])) {
            	  $this->fields[$key] = $value;
            	}
        		$this->EOF = false;
        	}
        }
        else if (@mysql_data_seek($this->resource, $zp_row)) {
          $zp_result_array = @mysql_fetch_array($this->resource);
            while (list($key, $value) = each($zp_result_array)) {
              $this->fields[$key] = $value;
            }
          @mysql_data_seek($this->resource, $zp_row);
          $this->EOF = false;
          return;
        } else {
          $this->EOF = true;
          $db->set_error(mysql_errno(),mysql_error());
        }
      }
    }
    
    class queryFactoryMeta {
    
      function queryFactoryMeta($zp_field) {
        $type = $zp_field['Type'];
        $rgx = preg_match('/^[a-z]*/', $type, $matches);
        $this->type = $matches[0];
        $this->max_length = preg_replace('/[a-z\(\)]/', '', $type);
      }
    }

  2. #2
    Join Date
    Feb 2012
    Location
    mostly harmless
    Posts
    1,809
    Plugin Contributions
    8

    Default Re: There is a PHP Fatal error in zencart_V151 Logs ,how to fix it?

    A quick search reveals the following thread. You may wish to read through the thread and pass along any requested / relevant information. I would recommend responding in the already open thread instead of to this thread it possible.
    The glass is not half full. The glass is not half empty. The glass is simply too big!
    Where are the Zen Cart Debug Logs? Where are the HTTP 500 / Server Error Logs?
    Zen Cart related projects maintained by lhûngîl : Plugin / Module Tracker

 

 

Similar Threads

  1. Replies: 2
    Last Post: 4 Jul 2014, 11:03 AM
  2. v151 PHP Fatal Error in log.. not sure how to proceed
    By theresab in forum General Questions
    Replies: 5
    Last Post: 16 Jan 2014, 08:26 AM
  3. PHP Fatal error: 1062 Duplicate entry Error, cannot fix table
    By RoboPhung in forum General Questions
    Replies: 5
    Last Post: 10 Apr 2013, 09:03 PM
  4. Strange MYSQL error in my logs, who out there is good enough to solve?
    By PearceStephens in forum General Questions
    Replies: 1
    Last Post: 31 Jan 2013, 08:06 AM
  5. How to modify the error?
    By skynike in forum General Questions
    Replies: 1
    Last Post: 26 May 2010, 11:13 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
disjunctive-egg