i parsing xml file , creating 2 arrays: 1 of xml tags ($tags), , other values tags ($values). parses, adds tags , values goes, when it's done, implode arrays , put them mysql statement:
$sql = "insert ($tags) value ($values)"; this works fine until have repeating tags, , sql statement doesn't work....
is there way find first repeated word in $tags array , split @ word (keeping tags follow it) , split $values array @ same index $tags split, information stays in same order?
so converting this:
insert (amazonorderid,merchantorderid,shipmentid,merchantfulfillmentid,posteddate,amazonorderitemcode,sku,quantity,principal,commission,amazonorderitemcode,sku,quantity,principal,commission,amazonorderitemcode,sku,quantity,principal,commission,fba) value ('1','1','d','a','2015','64','ox','1','18','-2','64','wa','1','23','-2','29','wag','1','49','77','97'); into like:
insert (amazonorderid,merchantorderid,shipmentid,merchantfulfillmentid,posteddate,amazonorderitemcode,sku,quantity,principal,commission) values ('1','1','d','a','2015','64','ox','1','18','-2'); insert (amazonorderitemcode,sku,quantity,principal,commission) values ('64','wa','1','23','-2'); insert (amazonorderitemcode,sku,quantity,principal,commission,fba) values ('29','wag','1','49','77','97'); thanks in advance!...
i base "something like".. :)
$fields = ['amazonorderid', 'merchantorderid', 'shipmentid', 'merchantfulfillmentid', 'posteddate', 'amazonorderitemcode', 'sku', 'quantity', 'principal', 'commission', 'amazonorderitemcode', 'sku', 'quantity', 'principal', 'commission', 'amazonorderitemcode', 'sku', 'quantity', 'principal', 'commission', 'fba']; $values = ['1','1','d','a','2015','64','ox','1','18','-2','64','wa','1','23','-2','29','wag','1','49','77','97']; // added avoid error produced by: `undefined offset` error warning error_reporting(0); $fields_dup = array(); $values_dup = array(); ($i = 0, $j = 0; $i < count($fields); $i++) { if (in_array($fields[$i], $fields_dup[$j])) $j++; $fields_dup[$j][] = $fields[$i]; $values_dup[$j][] = $values[$i]; // or maybe want add ` , ' make statement like: // insert table (`field1`, `field2`) values ('value1', 'value2') // // $fields_dup[$j][] = "`".$fields[$i]."`"; // $values_dup[$j][] = "'".$values[$i]."'"; } error_reporting(e_all); // show produced var_dump($fields_dup); var_dump($values_dup); // while can construct statement in loop ($i = 0; $i < count($fields_dup); $i++) { $sql_fields = implode(',', $fields_dup[$i]); $sql_values = implode(',', $values_dup[$i]); echo "insert ($sql_fields) values ($sql_values) <br>"; } output be:
//var_dump($fields_dup); array (size=3) 0 => array (size=10) 0 => string 'amazonorderid' (length=13) 1 => string 'merchantorderid' (length=15) 2 => string 'shipmentid' (length=10) 3 => string 'merchantfulfillmentid' (length=21) 4 => string 'posteddate' (length=10) 5 => string 'amazonorderitemcode' (length=19) 6 => string 'sku' (length=3) 7 => string 'quantity' (length=8) 8 => string 'principal' (length=9) 9 => string 'commission' (length=10) 1 => array (size=5) 0 => string 'amazonorderitemcode' (length=19) 1 => string 'sku' (length=3) 2 => string 'quantity' (length=8) 3 => string 'principal' (length=9) 4 => string 'commission' (length=10) 2 => array (size=6) 0 => string 'amazonorderitemcode' (length=19) 1 => string 'sku' (length=3) 2 => string 'quantity' (length=8) 3 => string 'principal' (length=9) 4 => string 'commission' (length=10) 5 => string 'fba' (length=3) // var_dump($values_dup); array (size=3) 0 => array (size=10) 0 => string '1' (length=1) 1 => string '1' (length=1) 2 => string 'd' (length=1) 3 => string 'a' (length=1) 4 => string '2015' (length=4) 5 => string '64' (length=2) 6 => string 'ox' (length=2) 7 => string '1' (length=1) 8 => string '18' (length=2) 9 => string '-2' (length=2) 1 => array (size=5) 0 => string '64' (length=2) 1 => string 'wa' (length=2) 2 => string '1' (length=1) 3 => string '23' (length=2) 4 => string '-2' (length=2) 2 => array (size=6) 0 => string '29' (length=2) 1 => string 'wag' (length=3) 2 => string '1' (length=1) 3 => string '49' (length=2) 4 => string '77' (length=2) 5 => string '97' (length=2) // last for-statement insert (amazonorderid,merchantorderid,shipmentid,merchantfulfillmentid,posteddate,amazonorderitemcode,sku,quantity,principal,commission) values (1,1,d,a,2015,64,ox,1,18,-2) insert (amazonorderitemcode,sku,quantity,principal,commission) values (64,wa,1,23,-2) insert (amazonorderitemcode,sku,quantity,principal,commission,fba) values (29,wag,1,49,77,97) is trying do?
hope helpful, cheers! ;)
Comments
Post a Comment