it-swarm.com.de

Herstellen einer Verbindung mit einer externen AWS RDS-Datenbank (nicht für die zentrale WordPress-Datenbank)

Ich versuche, eine Verbindung zu einer externen Datenbank in AWS RDS herzustellen, um Daten aus der externen Datenbank in WordPress mithilfe eines von mir geschriebenen Plugins anzuzeigen.

Mein einziges Problem besteht darin, eine Verbindung zur externen Datenbank herzustellen und Informationen daraus abzurufen.

Außerdem muss ich in der Lage sein, Informationen in der externen Datenbank zu aktualisieren.

Ich versuche, $awsdb = new wpdb( 'username', 'password', 'database', 'localhost' ); zu verwenden, aber es scheint nicht zu funktionieren.

RDS hat leicht unterschiedliche Zugangsdaten zu einer regulären MySQL-Datenbank und ich bin mit RDS nicht vertraut.

Die Details, mit denen ich arbeiten muss, sind:

adapter: mysql
encoding: utf8
database: database_name
username: username
password: password
Host: thedatabase.0000000000.location-1.rds.amazonaws.com
port: 0000

Ich habe die Informationen so platziert, wie ich es für richtig hielt:

$awsdb = new wpdb( 'username', 'password', 'database_name', 'thedatabase.0000000000.location-1.rds.amazonaws.com' );

aber das scheint nicht zu funktionieren.

Ich habe es auch mit dem angehängten Port versucht:

$awsdb = new wpdb( 'username', 'password', 'database_name', 'thedatabase.0000000000.location-1.rds.amazonaws.com:0000' );

Ich bin ein bisschen in diesem trivialen Teil des Puzzles verloren.

Hier ist die Funktion, die ich teste, indem ich versuche, eine Liste der gespeicherten Benutzernamen in der externen Tabelle anzuzeigen:

function test_connect_to_db() {
    $awsdb = new wpdb( 'username', 'password', 'database_name', 'thedatabase.0000000000.location-1.rds.amazonaws.com' );
    $rows = $awsdb->get_results( "SELECT * FROM table"  );
    echo '<div style="clear:both;text-align:center;"><h1>DB DETAILS</h1></div>';
    echo '<ul>';
    foreach ($rows as $obj) {
        echo '<li>'.$obj->user_id.'</li>';
    }
    echo '</ul>';

}
add_action( 'init', 'test_connect_to_db' );

Hinweis: Ich habe die tatsächlichen Anmeldeinformationen für die Verbindung weggelassen und Platzhaltertext verwendet.

1
Benbodhi

Mit dem folgenden Code konnte ich eine funktionierende Verbindung herstellen:

function test_connect_to_db() {

    $servername = 'thedatabase.0000000000.location-1.rds.amazonaws.com';
    $username = 'username';
    $password = 'password';
    $dbname = 'database';

    // Create connection
    $conn = new mysqli( $servername, $username, $password, $dbname );

    // Check connection
    if ( $conn->connect_error ) {
        die( 'Connection failed: ' . $conn->connect_error );
    } 

    $sql = 'SELECT id, firstname, lastname FROM table';
    $result = $conn->query( $sql );

    if ( $result->num_rows > 0 ) {
    // output data of each row
        while ( $row = $result->fetch_assoc() ) {
            echo '<br> id: '. $row['id']. ' - Name: '. $row['firstname']. ' ' . $row['lastname'] . '<br>';
        }
    } else {
        echo '0 results';
    }

    $conn->close();

}
add_action( 'init', 'test_connect_to_db' );
1
Benbodhi