justlukeyou Posted August 19, 2013 Share Posted August 19, 2013 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? $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; } Link to comment https://forums.phpfreaks.com/topic/281345-identifier-why-item-wont-insert-very-confusing/ Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.