Fork me on GitHub
Current release is 2.1.6 (21 Nov 2014).

Users who have not yet upgraded to 2.1 should get security release (1 Nov 2014). We will stop providing these security releases to 2.0 at the end of this year.

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

peregrineperegrine ☯ hasta luego :)In-Flight 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.

Monetary Donations will be appreciated if you use my plugins. Thanks in Advance.
As a waiter gets a tip for a good meal, tips for successful solutions appreciated as well. click here for Peregrine | click here for FAQ


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.