hvorfor anvender du global ??, det er dårlig kodeskik
hvorfor har du $con med over som parameter ?? du oversriver den alligevel.
jeg ville tage wpdb over som parameter istedet for $con
forudsat du har adgang til $wpdb og din sql virker, burde coden se sådan ud
(utested har ikke WP installeret, og aldrig lavet noget til WP)
<?php
//
https://www.computerworld.dk/eksperten/spm/1036845?k=8377558//
https://www.computerworld.dk/eksperten/spm/1036845?k=8377610//
https://www.computerworld.dk/eksperten/spm/1036845?k=8377564function users_Read_All_Limit($wpdb, $numbers, $offset) {
$con = $wpdb->__get('dbh');
$data = array();
$sql = "SELECT DISTINCT ID, post_date, **_posts.guid, **_posts.post_modified, **_posts.post_parent, **_posts.post_title, **_posts.post_type, **_postmeta.post_id, **_postmeta.meta_value, **_postmeta.meta_key FROM **_posts INNER JOIN **_postmeta ON ID = **_postmeta.post_id WHERE post_type in ('product', 'product_variation', 'attachment') and **_postmeta.meta_key in ('_stock', '_sku', '_regular_price', '_sale_price', '_wp_attached_file') ORDER BY **_postmeta.post_id, **_postmeta.meta_id ASC LIMIT ".$offset.",".$numbers;
$rs = $con->query($sql);
while ($row = $rs->fetch_array(MYSQLI_ASSOC) ) {
$data[] = $row;
}
return $data;
}
// faste værdier
$antal_pr_side = 5; // denne værdi skal ændres
$offset = 0;
$data = array();
// henter fra databasen i små klumper, uden brugeren skal gøre noget
$run = true;
while ($run) {
$tmp = users_Read_All_Limit($wpdb, $antal_pr_side, $offset);
$lng = count($tmp);
if ($lng < $antal_pr_side) {
$run = false;
}
if ($lng == 0) {
break;
}
// løber det midlertidige array igennem, og ligger det i det store array
for ($i = 0; $i < $lng; $i++) {
$data[] = $tmp[$i];
}
$offset += $antal_pr_side;
}
//
https://www.computerworld.dk/eksperten/spm/1036845?k=8377436// skal her gennem med XmlWriter
// test / kontrol
echo "<pre>";
print_r($data);
echo "</pre>";
?>
ellers må du skrive hvilke fejl du får