php - export mysql query array using fputcsv -
i trying export results of sql query csv using fputcsv keep getting error "fputcsv() expects parameter 2 array, string given".
i followed answer given here - query mysql , export data csv in php - throws error above. understand $val string , won't work fputcsv needs array don't understand how each row csv. if substitute $row $val first row of result in csv rather looping. know i'm missing glaringly obvious need nudge show me please. code below:
// mysqli query $result = mysqli_query($con, " select d.order_id 'order id', m1.meta_value 'first name', m2.meta_value 'last name', m3.meta_value 'address1', m4.meta_value 'address2', m5.meta_value 'city', m6.meta_value 'state', m7.meta_value 'post code', f1.meta_value 'sku', d.order_item_name 'product name', e2.meta_value 'quantity', m8.meta_value 'tracking - carrier', m9.meta_value 'tracking - code', m10.meta_value 'tracking - date', m11.meta_value 'tracking - picked' dk_posts p left join dk_postmeta m1 on p.id = m1.post_id , m1.meta_key = '_shipping_first_name' left join dk_postmeta m2 on p.id = m2.post_id , m2.meta_key = '_shipping_last_name' left join dk_postmeta m3 on p.id = m3.post_id , m3.meta_key = '_shipping_address_1' left join dk_postmeta m4 on p.id = m4.post_id , m4.meta_key = '_shipping_address_2' left join dk_postmeta m5 on p.id = m5.post_id , m5.meta_key = '_shipping_city' left join dk_postmeta m6 on p.id = m6.post_id , m6.meta_key = '_shipping_state' left join dk_postmeta m7 on p.id = m7.post_id , m7.meta_key = '_shipping_postcode' left join dk_postmeta m8 on p.id = m8.post_id , m8.meta_key = 'ywot_carrier_name' left join dk_postmeta m9 on p.id = m9.post_id , m9.meta_key = 'ywot_tracking_code' left join dk_postmeta m10 on p.id = m10.post_id , m10.meta_key = 'ywot_pick_up_date' left join dk_postmeta m11 on p.id = m11.post_id , m11.meta_key = 'ywot_picked_up' left join dk_woocommerce_order_items d on d.order_id=m1.post_id left join dk_woocommerce_order_itemmeta e1 on d.order_item_id = e1.order_item_id , e1.meta_key = '_product_id' left join dk_woocommerce_order_itemmeta e2 on d.order_item_id = e2.order_item_id , e2.meta_key = '_qty' left join dk_postmeta f1 on e1.meta_value = f1.post_id , f1.meta_key = '_sku' post_status = 'wc-processing' , order_item_type = 'line_item' "); $row = mysqli_fetch_array($result, mysqli_assoc); $fp = fopen('file.csv', 'w'); foreach ($row $val) { fputcsv($fp, $val); } fclose($fp);
corresponding official manual mysqli_fetch_array:
mysqli_fetch_array — fetch result row associative, numeric array, or both
you coded mysqli_assoc flag, yo associative array one row of data:
by using mysqli_assoc constant function behave identically mysqli_fetch_assoc()
see examples of mysqli_fetch_assoc understand i'm talking about.
so put data csv row row, u should organize loop, smth this:
<? // making query $fp = fopen('file.csv', 'w'); $placed_header = false; while($row = mysqli_fetch_array($result, mysqli_assoc)) { // add header table if(!$placed_header) { fputcsv($fp, array_keys($row)); $placed_header = true; } // place row of data fputcsv($fp, array_values($row)); } fclose($fp);
Comments
Post a Comment