Fork me on GitHub
Please upgrade to 2.1.x here. The 2.0 branch is no longer being updated.
Critical: Update to 2.1.8, released 15 Jan.

[Documentation] Guidance needed on reading from an External Database within a plugin.

peregrineperegrine MVP
edited March 2012 in Vanilla 2.0 Help

I am developing a plugin that reads data from an External database.

I have been able to do an external database read by modifying a plugin and using the PDO prepare fetch and execute statements outside of the extends plugin class but still residing in the plugin.

The only solution I have found is setting the variables outside of the class and putting the functions outside of the class (and I suspect this not the correct way to do things).

However, since I am a novice at oop and vanilla, when I try to put it inside extends plugin class I get a PDO error (if I remember correctly it said can't find PDO).

Can someone guide me through an example, give me a few tips, or point me to a plugin where I can achieve using PDO statement to an External Database (not vanilla) to execute some prepare, execute and fetch commands).

Thanks for any assistance on this.


Best Answers

  • ToddTodd Chief Product Officer Vanilla Staff
    Answer ✓

    I'm a little perplexed by this problem. If you can find PDO outside of Vanilla then you should be able to find it inside of it.

    If you want to use Vanilla, but query an external database in a free form way you can also try the following.

    // I'm going to assume you are on the same server as Vanilla.
    $Db = new Gdn_Database(array('Dbname' => 'Database Name'));
    $Data = $Db->Query('select * from something')->ResultArray();
  • ToddTodd Chief Product Officer Vanilla Staff
    Answer ✓

    Okay here's the code in Vanilla:

    $Db = new Gdn_Database(array('Host' => 'localhost', 'Dbname' => 'external', 'User' => 'external', 'Password' => 'mypass'));
    $Results = $Db->Query("SELECT * FROM table WHERE example=:example", array(':example' => $example))->Result();

    If you want to use prepare and whatnot you can access the PDO object directly.

    $PDO = $Db->Connection();

    Finally, if you want to be able to put your database connection information in your config. You can add the following to your config.

    $Configuration['ExDatabase']['Host'] = 'localhost';
    $Configuration['ExDatabase']['Dbname'] = 'external';
    $Configuration['ExDatabase']['User'] = 'external';
    $Configuration['ExDatabase']['Password'] = 'mypass';
    $Db = new Gdn_Database('ExDatabase');

    All of the relavent db config is in Gdn_Database->Init() in \library\database\class.database.php.

  • hbfhbf wiki guy? MVP
    Answer ✓

    I'm not opposed to having peoples names in the wiki, feel free to edit the page.

    I havent gotten around to testing the new version yet.


Sign In or Register to comment.