I am trying to interact with my wqordpress database.
I need to upload a csv file to my database but it will not run any query, no matter which way I try using the WordPress codex, I cannot get it to do what I need to.

So from my Admin panel, I upload the csv file click sumbmit which then runs the following function.

The error I get is: Fatal error: Call to a member function query() on a non-object in /home/dlaveric/public_html/client-area/clients/client/wp/wp-content/themes/Theme/includes/wine-list/wine-list-functions.php on line 11

Here is my code:


if (isset ($_POST['Submit']))

function upList(){

    global $wpdb;
            " DELETE FROM $wpdb->winelist"

    if ($_FILES['csv']['size'] > 0) {

        //get the csv file
        $file = $_FILES['csv']['tmp_name'];
        $handle = fopen($file,"r");


        //loop through the csv file and insert into database
        do {
            if ($data[0]) {
                        'item' => addslashes($data[0]),
                        'btlPrice' => addslashes($data[1]),
                        'casePrice' => addslashes($data[2]),
                        'salePrice' => addslashes($data[3])

        } while ($data = fgetcsv($handle,1000,",","'"));

            SELECT * 
            FROM $wpdb->winelist    
            ORDER by id

        //throw out table stuff here!
4 Years
Discussion Span
Last Post by dlaverick

It says that $wpdb is not an object so you can not address a method of it. Has $wpdb been initialized as a database object somewhere?


it gets set as gloabl on line 10, its a built in wordpress function. As far as I am aware its used throughout the whole system.


Maybe you check for the existence of the object first (to be on the safe side):

function upList() {

if(!isset($wpdb) || !method_exists($wpdb, 'query')) {
    die('Error accessing database');

    global $wpdb;

or send the object as an argument (no need to use global keyword):

function upList($wpdb) {


Well, this still does not answer why the DB object has not been initialized...

Edited by broj1


I managed to get it working be calling in my wp-config before my global. that did the trick.

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.