Hi,

I have the following code which should insert information into two tables "productdbase" and "furniture_groups". However the code inserts more lines into productdbase than what it does into furniture_groups. For example products 1-10 will be inserted into productdbase but only 1,3,4,7 and 9 will be inserted into furniture_groups.

However there appears to be nothing different between lines 2 and 3 or 6 and 7.

Is it possible to create a code as to why something wont insert into a table?


Code:
	$fp = $zip->getStream("datafeed_98057.xml"); //file inside archive
	if(!$fp)
		die("Error: can't get stream to zipped file");
	$buf = ""; 
	ob_start();
	while (!feof($fp)) 
		$buf .= fread($fp, 2048);
	$s = ob_get_contents();
	ob_end_clean();
	if(stripos($s, "CRC error") != FALSE)
		die('CRC32 mismatch');
	fclose($fp);
	$zip->close();
	$ax = strocc($buf, '<prod', '</prod>');
	
	echo '<pre>';
	for($i=0; $i<sizeof($ax); $i++)
	{ 
		$arr = $ax[$i];
		echo strpp($arr, '<pId>', '</pId>') ."<br />";
		echo strpp($arr, '<mCat>', '</mCat>') ."<br />";
		echo strpp($arr, '<awCat>', '</awCat>') ."<br />";
		$desc = '';
		if(strpos($ax[$i], '<desc>')!==FALSE)
		{
			$desc = safe_string_escape(strpp($ax[$i], '<desc>', '</desc>'));
		}
		$discount = 0;
		if(floatval(strpp($arr, '<rrp>', '</rrp>'))!=0)
			$discount = 100 - (floatval(strpp($arr, '<buynow>', '</buynow>')) / floatval(strpp($arr, '<rrp>', '</rrp>')) * 100);
		mysql_query("insert into productdbase SET  
					 image_link = '" .safe_string_escape(strpp($arr, '<awImage>', '</awImage>')) ."', 
				     link = '" .safe_string_escape(strpp($arr, '<awTrack>', '</awTrack>')) ."', 
					 name = '" .safe_string_escape(strpp($arr, '<name>', '</name>')) ."', 
					 linkname = '" .str_replace("---", "-", str_replace(" ", "-", safe_string_escape(strpp($arr, '<name>', '</name>')))) ."', 
					 fulldescription = '$desc', 
					 merchant_category = '" .safe_string_escape(strpp($arr, '<mCat>', '</mCat>')) ."', 
				     price = '" .safe_string_escape(strpp($arr, '<buynow>', '</buynow>')) ."', 
					 discount = '$discount', 
					 merchant = '" .safe_string_escape(strpp($arr, 'name="', '"')) ."', 
					 promotional_text = '$desc', 
				     id = '" .strpp($arr, '<pId>', '</pId>') ."'");
					 
			
		mysql_query("insert into furniture_groups SET  
					 long_name = '" .safe_string_escape(strpp($arr, '<mCat>', '</mCat>')) ."', 
					 short_name = '" .safe_string_escape(strpp($arr, '<awCat>', '</awCat>')) ."', 
				     id = '" .strpp($arr, '<pId>', '</pId>') ."'");	 
					 
		//echo mysql_error();
	}
}
else
	echo "zip not found";
unlink($file);


	

function strocc($str, $pos1, $pos2)
{
	$pos=0;
	$occ=array();
	while(strpos($str, $pos1, $pos) && strpos($str, $pos2, strpos($str, $pos1, $pos)))
	{
		array_push($occ, strpp($str, $pos1, $pos2, $pos));
		$pos = strpos($str, $pos2, strpos($str, $pos1, $pos));
	}
	return ($occ);
} 

function strpp($str, $pos1, $pos2, $startoffset=0)
{
	return substr($str, (strpos($str, $pos1, $startoffset)+strlen($pos1)), strpos($str, $pos2, strpos($str, $pos1, $startoffset)+strlen($pos1))-(strpos($str, $pos1, $startoffset)+strlen($pos1)));
}

function mysqlinit($user, $pass, $db, $host='localhost')
{
	$link = mysql_connect($host, $user, $pass);
	if (!$link)
	{
		echo('Cant connect to MySQL : ' .mysql_error());
		return 0;
	}
	$db_selected = mysql_select_db($db, $link);
	if (!$db_selected)
	{
		echo('Cant use database ' .$db .': ' .mysql_error());
		return 0;
	}
	return 1;
}


function safe_string_escape($str)
{
	$len=strlen($str);
	$escapeCount=0;
	$targetString='';
	for($offset=0;$offset<$len;$offset++) {
		switch($c=$str{$offset}) {
			case "'":
				if($escapeCount % 2 == 0) $targetString.="\\";
				$escapeCount=0;
				$targetString.=$c;
				break;
			case '"':
				if($escapeCount % 2 == 0) $targetString.="\\";
				$escapeCount=0;
				$targetString.=$c;
				break;
			case '\\':
				$escapeCount++;
				$targetString.=$c; 
				break;
			default:
				$escapeCount=0;
				$targetString.=$c;
		}
	}
	return $targetString;
}