WordPress.org

Ready to get started?Download WordPress

Forums

get_var() on a non-object $wpdb (10 posts)

  1. tom_a_sparks
    Member
    Posted 7 years ago #

    I am trying to write a plugin that access the database but all I get is
    "Fatal error: Call to a member function get_var() on a non-object in C:\xampp\htdocs\wp-content\plugins\audio-comments\audio-comments.php on line 228"

    none of the examples work
    help
    // mt_comments_page() displays the page content for the audio comments Options submenu
    function mt_comments_page() {

    echo "<div class=\"wrap\">";
    echo "<h2>Audio Comments Manage</h2>";
    // example code starts here
    $name = $wpdb->get_var("SELECT cat_name FROM $wpdb->categories WHERE cat_ID=4");
    echo $name;
    // example code ends here
    echo "</div>";
    }

  2. harknell
    Member
    Posted 7 years ago #

    Is this in a function? If so did you declare $wpdb as a global variable? If not then it doesn't know what $wpdb is and doesn't know what to do with it.

  3. grosbouff
    Member
    Posted 6 years ago #

    Hello, I have the same problem since a little time;
    but i HAVE the $wpdb as global...
    Don't know what I've broken !

    function get_root_parent($page_id) {
    		global $wpdb;
    		$parent = $wpdb->get_var("SELECT post_parent FROM $wpdb->posts WHERE post_type='page' AND ID = '$page_id'");
    		if ($parent == 0) return $page_id;
    		else return get_root_parent($parent);
    	}
  4. grosbouff
    Member
    Posted 6 years ago #

    I have this function inside my menu.php

    function get_root_parent($page_id) {
    	global $wpdb;
    	$parent = $wpdb->get_var("SELECT post_parent FROM $wpdb->posts WHERE post_type='page' AND ID = '$page_id'");
    	if ($parent == 0) return $page_id;
    	else return get_root_parent($parent);
    }

    with this

    <div id="menu">
    		<?php
    			include (STYLEROOT.'/menu.php');
    		?>
    	</div>
    , I have the error

    : Call to a member function get_var() on a non-object in...

    , with this I have not...

    <div id="menu">
    		<?php
    function get_root_parent($page_id) {
    	global $wpdb;
    	$parent = $wpdb->get_var("SELECT post_parent FROM $wpdb->posts WHERE post_type='page' AND ID = '$page_id'");
    	if ($parent == 0) return $page_id;
    	else return get_root_parent($parent);
    }
    			include (STYLEROOT.'/menu.php');
    		?>
    	</div>
    , but it seems that menu.php can't find the function.
    What's the deal ??!

  5. Kafkaesqui

    Posted 6 years ago #

    grosbouff,

    First, you're better off placing PHP function statements in a separate functions.php file located with your active theme. This is included automatically by WordPress if it exists.

    Second, why are you referencing the function within the function at that point? The logic of your code would have:

    else return get_root_parent($parent);

    put PHP into a sort of dead loop (the function will just keep calling itself if there is no parent). I'd change it to:

    else return $parent;

    Finally, is the function actually called in your menu.php or elsewhere?

  6. grosbouff
    Member
    Posted 6 years ago #

    this function is called inside menu.php (which is a template file, like "sidebar").
    I noticed that it works if I put all the content of menu.php inside header.php, without any include so.

    The inclusion is the problem.... what to do ?

    Thanks !

  7. Kafkaesqui

    Posted 6 years ago #

    "I noticed that it works if I put all the content of menu.php inside header.php, without any include so."

    I don't see how so. How does the function run if it is not called at some point? Just placing a PHP function statement into your code does not run it.

  8. grosbouff
    Member
    Posted 6 years ago #

    I put my function inside functions.php, it does not work either...

    function get_root_parent($page_id) {
    	global $wpdb;
    	$parent = $wpdb->get_var("SELECT post_parent FROM $wpdb->posts WHERE post_type='page' AND ID = '$page_id'");
    	if ($parent == 0) return $page_id;
    	else return get_root_parent($parent);
    }

    (this is not a dead loop, the functions is recursive until $parent == 0)

  9. grosbouff
    Member
    Posted 6 years ago #

    (sorry, it works ! I forgot something...)

  10. o3fingers
    Member
    Posted 6 years ago #

    What were you forgetting? I'm using this same code, and another function based off of it, and I'm trying to get it to work from within functions.php

    On a side note, should I declare the global $wpdb inside the function? Does it matter?

Topic Closed

This topic has been closed to new replies.

About this Topic

Tags