При получении getLastId();

Mr.Arsi

Новичок
При получении getLastId() из другой функции первое значение у меня выходит NULL !!
К примеру вот в данной функции я передаю в переменную полученный id

PHP:
    public function addProductRelated(&$product_id_related, &$dataRelated) {


          
    $sql = '';
      
        if(isset($this->field_caption['_MODEL-RELATED_'])) {
            $sql .= ' model = \'' . $this->db->escape($dataRelated[$this->field_caption['_MODEL-RELATED_']]) .'\',';
        }
      
        $sql .= ' location = \'' . (string)$this->setting['location'] . '\',';
        $sql .= ' subtract = \'' . (int)$this->setting['subtract'] . '\',';
        $sql .= ' shipping = \'' . (int)$this->setting['shipping'] . '\',';
        $sql .= ' date_added = NOW(),';
        $sql .= ' date_available = NOW(),';
      
        if ( isset($this->field_caption['_STATUS_']) ) {
            $sql .= ' status = \'' . (int)$dataRelated[$this->field_caption['_STATUS_']] . '\',';
        } else {
            $sql .= ' status = \'' . (int)$this->setting['status'] . '\',';
        }

        if( isset($this->CustomFields[DB_PREFIX . 'product']) && count($this->CustomFields[DB_PREFIX . 'product']) > 0 ) {
            foreach ($this->CustomFields[DB_PREFIX . 'product'] as $field) {
                if(isset($this->field_caption[$field['csv_name']])) $sql .= ' ' . $field['field_name'] . ' = \'' . $this->db->escape($dataRelated[$this->field_caption[$field['csv_name']]]) . '\',';
            }
        }
      
        if(isset($this->field_caption['_MANUFACTURER-RELATED_'])) {
            $manufacturer_id = $this->getManufacturer($dataRelated[$this->field_caption['_MANUFACTURER-RELATED_']]);
            $sql .= ' manufacturer_id = \'' . (int)$manufacturer_id . '\'';
        } else {
            $sql .= ' manufacturer_id = \'' . (int)$this->setting['product_manufacturer'] . '\''; // Last Field
        }
      
        $sql = ' INSERT INTO `product` SET ' . $sql;
        $this->db->query($sql);
        $product_id_related = $this->db->getLastId();
      
        if (isset($this->setting['product_store'])) {
            foreach ($this->setting['product_store'] as $store_id) {
                $this->db->query('INSERT INTO `' . DB_PREFIX . 'product_to_store` SET product_id = \'' . (int)$product_id_related . '\', store_id = \'' . (int)$store_id . '\'');
            }
        }
      
        if(!$product_id_related) return FALSE;
      
        $sql = '';

        if(isset($this->field_caption['_NAME-RELATED_'])) {
            $sql .= ' name = REPLACE(\'' . $this->db->escape($dataRelated[$this->field_caption['_NAME-RELATED_']]) . '\', \'"\', \'"\'),';
        }
        if(isset($this->field_caption['_HTML_TITLE_'])) $sql .= ' seo_title = \'' . $this->db->escape($dataRelated[$this->field_caption['_HTML_TITLE_']]) . '\',';
        if(isset($this->field_caption['_HTML_H1_'])) $sql .= ' seo_h1 = \'' . $this->db->escape($dataRelated[$this->field_caption['_HTML_H1_']]) . '\',';
        if(isset($this->field_caption['_META_KEYWORDS_'])) $sql .= ' meta_keyword = \'' . $this->db->escape($dataRelated[$this->field_caption['_META_KEYWORDS_']]) . '\',';
        if(isset($this->field_caption['_META_DESCRIPTION_'])) $sql .= ' meta_description = \'' . $this->db->escape($dataRelated[$this->field_caption['_META_DESCRIPTION_']]) . '\',';
        if(isset($this->field_caption['_DESCRIPTION_'])) {
            $sql .= ' description = \'' . $this->db->escape(htmlspecialchars($dataRelated[$this->field_caption['_DESCRIPTION_']])) . '\',';
        }
        if(in_array(VERSION, array('1.5.4', '1.5.4.1', '1.5.5', '1.5.5.1'))){
            if(isset($this->field_caption['_PRODUCT_TAG_'])) $sql .= ' tag = \'' . $this->db->escape(htmlspecialchars($dataRelated[$this->field_caption['_PRODUCT_TAG_']])) . '\',';
        }
      
        if( isset($this->CustomFields[DB_PREFIX . 'product_description']) && count($this->CustomFields[DB_PREFIX . 'product_description']) > 0 ) {
            foreach ($this->CustomFields[DB_PREFIX . 'product_description'] as $field) {
                if(isset($this->field_caption[$field['csv_name']])) $sql .= ' ' . $field['field_name'] . ' = \'' . $this->db->escape( htmlspecialchars($dataRelated[$this->field_caption[$field['csv_name']]]) ) . '\',';
            }
        }
      
        if(!empty($sql)) {
            $sql = 'INSERT INTO `' . DB_PREFIX . 'product_description` SET ' . $sql . ' product_id = \'' . (int)$product_id_related . '\', language_id = \'' . (int)$this->setting['language_id'] . '\'';
            $this->db->query($sql);
        }

        if(in_array(VERSION, array('1.5.1.3', '1.5.1.3.1', '1.5.2', '1.5.2.1', '1.5.3', '1.5.3.1'))){
            if(isset($this->field_caption['_PRODUCT_TAG_'])) {
                $this->db->query('DELETE FROM `' . DB_PREFIX . 'product_tag` WHERE product_id = \'' . (int)$product_id_related . '\' AND language_id = \'' . (int)$this->setting['language_id'] . '\'');
                if( !empty($dataRelated[$this->field_caption['_PRODUCT_TAG_']]) ) {
                    $tags = explode(',', $dataRelated[$this->field_caption['_PRODUCT_TAG_']]);
                    foreach ($tags as $tag) {
                        $sql = 'INSERT INTO `' . DB_PREFIX . 'product_tag` SET product_id = \'' . (int)$product_id_related . '\', language_id = \'' . (int)$this->setting['language_id'] . '\', tag = \'' . $this->db->escape(trim($tag)) . '\'';
                        $this->db->query($sql);
                    }
                }
            }
        }
      
        $sql = '';
        if(isset($this->field_caption['_SEO_KEYWORD_'])) {
            $this->db->query('DELETE FROM `' . DB_PREFIX . 'url_alias` WHERE query = \'product_id=' . (int)$product_id_related . '\'');
            if( !empty($dataRelated[$this->field_caption['_SEO_KEYWORD_']]) ) {
                $sql = 'INSERT INTO `' . DB_PREFIX . 'url_alias` SET query = \'product_id=' . (int)$product_id_related . '\', keyword = \'' . $this->db->escape($dataRelated[$this->field_caption['_SEO_KEYWORD_']]) . '\'';
                $this->db->query($sql);
            }
        }
      
    $this->db->query('INSERT INTO `' . DB_PREFIX . 'product_to_category` SET product_id = \'' . (int)$product_id_related . '\', category_id = \'108\'');
  
            $this->db->query("INSERT INTO url_alias
            SET query = 'product_id=" . (int)$product_id_related . "',
            keyword = '" . $this->db->escape($dataRelated[$this->field_caption['_MANUFACTURER-RELATED_']]. "-" .$dataRelated[$this->field_caption['_MODEL-RELATED_']]) . "'
            ");

          
$this->product_id_related_new = $product_id_related;
            return true;
          
    }
и получаю результат !



Первое значение у меня NULL
Но если я буду выводить данный getLastId() в самой функции то проблем у меня нет !
 
Последнее редактирование:

AnrDaemon

Продвинутый новичок
Уже после третьей строчки хочется перестать читать.
После пятой - начать убивать.
Кто тебя учил запросы писать?

Впрочем, нет, больно бить хочется уже после первой строчки.
Зачем тебе byref параметры?
 
Последнее редактирование:

Mr.Arsi

Новичок

AnrDaemon

Продвинутый новичок
Ты вопрос прочёл? А понял? Я не спрашивал, как это работает.
Я спросил, зачем ТЕБЕ это? Конкретно в твоём коде?
Или, если ты не понимаешь намёков, скажу прямо - твой код уродлив и бессмысленен, как ругань пьяного бомжа.
 

AnrDaemon

Продвинутый новичок
И, да, я таки продрался через твой код… и вынужден констатировать, что первое впечатление нисколько не изменилось после прочтения последней строчки.
return true - надо же, как информативно.
Почему не return $product_id_related, раз она тебе так интересна?
И вообще, почему твоя функция делает то ли два, то ли три несвязных действия? Совершенно непонятно, какой lastInserId из той кучи… в общем, кучи имеется в виду.
 
Сверху