Собственно есть в csv файле значения равные нулю, и записываться они должны в mt_cfvalues, всё кроме нуля записывается нормально, а вот с нулем даже не создаются в чем может быть проблема? Код (Text): function import_csv() { global $mainframe; $database =& JFactory::getDBO(); $files = JRequest::get( 'files' ); $file_csv = $files['file_csv']; if( isset($file_csv['tmp_name']) && file_exists($file_csv['tmp_name']) ) { # Find user_id for administrator $database->setQuery( "SELECT id FROM #__users WHERE username = 'admin' OR usertype = 'Super Administrator' LIMIT 1" ); $admin_user_id = $database->loadResult(); # Now, start reading the file $row = 0; $index_catid = -1; $index_linkname = -1; $handle = fopen($file_csv['tmp_name'], "r"); // Test if the csv file is using /r as the line ending. If it is, use our custom csv parser. $data = fgets($handle, 100000); $type = 0; // if(strpos($data,"\r") > 0) { // $type = 1; // } rewind($handle); while (($data = mtgetcsv($handle,$type,$row)) !== FALSE) { $row++; # Set the field name first if ( $row == 1 ) { $fields = array(); for ($f=0; $f < count($data); $f++) { if ( $data[$f] == 'cat_id' ) { $index_catid = $f; } $fields[] = $data[$f]; if( $data[$f] == 'link_name' ) { $index_linkname = $f; } } // echo "Fields list: <b>" .implode("|",$fields) . "</b><br />"; } else { # Make sure the listing has at least a link_name. Everything else is optional. if ( !empty($data[$index_linkname]) ) { $num = count($data); $sql_cf_ids = array(); $sql_cf_insertvalues = array(); $sql_insertfields = array('alias','link_published','link_approved','link_created','user_id'); $sql_insertvalues = array(JFilterOutput::stringURLSafe($data[$index_linkname]),1,1,date('Y-m-d H:i:s'),$admin_user_id); for ($c=0; $c < $num; $c++) { if ( !empty($data[$c]) && !empty($fields[$c]) && $c != $index_catid ) { switch($fields[$c]) { case 'alias': $sql_insertvalues[0] = $database->getEscaped($data[$c]); break; case 'link_published': $sql_insertvalues[1] = $database->getEscaped($data[$c]); break; case 'link_approved': $sql_insertvalues[2] = $database->getEscaped($data[$c]); break; case 'link_created': $sql_insertvalues[3] = $database->getEscaped($data[$c]); break; case 'user_id': $sql_insertvalues[4] = $database->getEscaped($data[$c]); break; default: if(is_numeric($fields[$c])) { if($fields[$c] > 22) { $sql_cf_ids[] = $fields[$c]; $sql_cf_insertvalues[] = $database->getEscaped($data[$c]); } } else { $sql_insertfields[] = $fields[$c]; $sql_insertvalues[] = $database->getEscaped($data[$c]); } break; } // echo "<br /><b>".$fields[$c].": </b>".$database->getEscaped($data[$c]); } } if ( count($sql_insertfields) == count($sql_insertvalues) && count($sql_insertvalues) > 0 ) { # Insert core data $sql = "INSERT INTO #__mt_links (".implode(",",$sql_insertfields).") VALUES ('".implode("','",$sql_insertvalues)."')"; $database->setQuery($sql); $database->query(); $link_id = $database->insertid(); // echo '<br />' . $sql; # Insert Custom Field's data $values = array(); if(count($sql_cf_ids)>0 && count($sql_cf_insertvalues)>0) { $sql = "INSERT INTO #__mt_cfvalues (cf_id,link_id,value) VALUES"; for($i=0;$i<count($sql_cf_ids);$i++) { $values[] = "('" . $sql_cf_ids[$i] . "', '" . $link_id . "', '" . $sql_cf_insertvalues[$i] . "')"; } $sql .= implode(',',$values); $database->setQuery($sql); $database->query(); // echo '<br />' . $sql; } # Assign listing to categories if(stristr($data[$index_catid],',') === false) { $sql = "INSERT INTO #__mt_cl (link_id, cat_id, main) VALUES (".$link_id.", ".( ($index_catid == -1 || empty($data[$index_catid])) ? 0:$data[$index_catid] ).",1)"; $database->setQuery($sql); $database->query(); // echo '<br />' . $sql; # This record is assigning to more than one category at once. } else { $cat_ids = explode(',',$data[$index_catid]); $j = 0; foreach($cat_ids AS $cat_id) { if( !empty($cat_id) ) { $sqlvalue = '('.$link_id.','.$cat_id.','; if($j==0) { $sqlvalue .= '1'; } else { $sqlvalue .= '0'; } $sqlvalue .= ')'; $sqlvalues[] = $sqlvalue; ++$j; } } if( !empty($sqlvalues) ) { $sql = 'INSERT INTO #__mt_cl (link_id, cat_id, main) VALUES ' . implode(', ',$sqlvalues); $database->setQuery($sql); $database->query(); // echo '<br />' . $sql; } unset($sqlvalues); } } } } echo '<hr />'; } fclose($handle); $mainframe->redirect( 'index.php?option=com_mtree', JText::_( 'Import process Complete!' ) ); } else { $mainframe->redirect( 'index.php?option=com_mtimporter&task=check_csv', JText::_( 'No file specified' ) ); } } function mtgetcsv($handle,$type=0,$line=0) { switch($type) { case 1: rewind($handle); $data = fgets($handle); $newlinedData = explode("\r",$data); if(($line+1)>count($newlinedData)) { return false; } else { $expr="/,(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))/"; $results=preg_split($expr,trim($newlinedData[$line])); return preg_replace("/^\"(.*)\"$/","$1",$results); } break; case 0: default: return fgetcsv($handle, 100000, ","); } } Вот думаю что виновата данная часть кода Код (Text): # Insert Custom Field's data $values = array(); if(count($sql_cf_ids)>0 && count($sql_cf_insertvalues)>0) { $sql = "INSERT INTO #__mt_cfvalues (cf_id,link_id,value) VALUES"; for($i=0;$i<count($sql_cf_ids);$i++) { $values[] = "('" . $sql_cf_ids[$i] . "', '" . $link_id . "', '" . $sql_cf_insertvalues[$i] . "')"; } $sql .= implode(',',$values); $database->setQuery($sql); $database->query(); // echo '<br />' . $sql; }