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