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

    Default PHP Fatal error: 1062 I need help!!!

    PHP Fatal error: 1062: Duplicate entry 'ca34fbe5f9a075091ad59abf02c259a7-1' for key 'PRIMARY' :: INSERT INTO seo_cache (cache_id, cache_language_id, cache_name, cache_data, cache_global, cache_gzip, cache_method, cache_date, cache_expires) VALUES ('ca34fbe5f9a075091ad59abf02c259a7', '1', 'seo_urls_v2_products', 'XXXXXXXXXXXXXXXXXXXXXXX/', '1', '1', 'EVAL', '2013-11-12 12:30:01', '2013-12-12 12:30:01') in /home/zch0071/domains/infashionwholesale.com/public_html/includes/classes/db/mysql/query_factory.php on line 122

    how to fixed?
    query_factory.php code
    PHP 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_passwordtrue);
          
    $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);
                
    @mysql_query("SET CHARACTER_SET_CLIENT = '" DB_CHARSET "'"$this->link);
                @
    mysql_query("SET CHARACTER_SET_RESULTS = '" 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 == && $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_sqlE_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[email protected]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) > ) {
            
    $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() > && $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->resultsizeof($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($insertString0strlen($insertString)-2) . ') VALUES (';
          
    reset($tableData);
          foreach (
    $tableData as $key => $value) {
            
    $bindVarValue $this->getBindVarValue($value['value'], $value['type']);
            
    $insertString .= $bindVarValue ", ";
          }
          
    $insertString substr($insertString0strlen($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($updateString0strlen($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) ? $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);
      }
    }
    code 122:
    PHP Code:
    trigger_error($this->error_number ':' $this->error_text ' :: ' $this->zf_sqlE_USER_ERROR); 
    Last edited by zch0071; 14 Nov 2013 at 10:53 AM.

  2. #2
    Join Date
    Sep 2009
    Location
    Stuart, FL
    Posts
    10,816
    Plugin Contributions
    80

    Default Re: PHP Fatal error: 1062 I need help!!!

    The query_factory code is just the messenger of the error; the culprit is whatever code is attempting to duplicate a primary key. The seo_cache table isn't a standard Zen Cart element and is most likely associated with whatever SEO plugin you're using. I suggest that you post your question in the support forum for that plugin.

 

 

Similar Threads

  1. Replies: 33
    Last Post: 29 Dec 2014, 07:34 PM
  2. v151 PHP Fatal error: 1062:Duplicate entry
    By joyjoy in forum General Questions
    Replies: 6
    Last Post: 2 Jan 2014, 10:17 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. v151 PHP Fatal error 1062: Duplicate entry '2147483647' for key 1
    By NoobGal in forum General Questions
    Replies: 5
    Last Post: 20 Jan 2013, 05:36 PM
  5. v151 PHP Fatal error:1062:Duplicate entry '1-1' for key 'PRIMARY'
    By Dopefish in forum General Questions
    Replies: 14
    Last Post: 19 Oct 2012, 02:58 AM

Bookmarks

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
Zen-Cart, Internet Selling Services, Klamath Falls, OR