admin管理员组

文章数量:1332352

Traditionally, whenever I've needed a real mysqli_fetch for things like importing thousands of rows of data, I've used my own database connection and framework. But I was thinking there must be a way to use the existing database connection to do this, so I looked through the wp-includes/wp-db.php file and determined that I can simply use the database handler that already exists and being used by the global $wpdb database class instance.

In doing so, a query can be processed line by line, rather than attempting to load several thousand rows in to a the result from a $wpdb->get_results call.

Here is my current solution:

   $q = mysqli_query($wpdb->dbh,"SELECT * FROM some_table;");
   while ($r = mysqli_fetch_assoc($q)) {
    var_dump($r);
   }

By simply using the protected class property $wpdb->dbh, it's allowing custom queries to be called without having to resort to adding a custom database framework to do heavy database processing work.

While this is working, I'm concerned that this may not be the best solution for being compatible with future versions of Wordpress as this is a bit of a hack solution, as this is not the normal expected use of $wpdb. As such, I'm interested to know if anyone else found a better solution that is more based on the expected use of $wpdb.

Note, I've looked at using $wpdb->get_row along with the row number, but that appears to actually execute the query with each request anew, rather than using a single query and iterating through.

本文标签: Iterating through wpdb query without using getresults for large query results