web-dev-qa-db-fra.com

Comment se connecter à la base de données externe AWS RDS (pas pour la base de données WordPress)

J'essaie de me connecter à une base de données externe sur AWS RDS pour afficher les données de la base de données externe dans WordPress, à l'aide d'un plugin que j'écris.

Mon seul problème est de me connecter à la base de données externe et d’en extraire des informations.

De plus, je dois également pouvoir mettre à jour les informations dans la base de données externe.

J'essaie d'utiliser $awsdb = new wpdb( 'username', 'password', 'database', 'localhost' ); mais cela ne semble pas fonctionner.

RDS a des détails d'accès légèrement différents d'une base de données MySQL normale et je ne suis pas familier avec RDS.

Les détails avec lesquels je dois travailler sont:

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

J'ai placé les informations dans la façon dont je pensais être correct:

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

mais cela ne semble pas fonctionner.

J'ai aussi essayé avec le port ajouté:

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

Je suis un peu perdu sur cette pièce triviale du puzzle.

Voici la fonction que je teste en essayant d'afficher une liste des noms d'utilisateur stockés dans la table externe:

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' );

Remarque: j'ai omis les informations d'identification de connexion réelles et le texte de substitution utilisé.

1
Benbodhi

J'ai pu obtenir une connexion en utilisant le code suivant:

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