web-dev-qa-db-ja.com

AWS RDS外部データベースに接続する方法(WordPressのコアデータベースではありません)

私が書いているプラ​​グインを使用して、WordPressで外部データベースからデータを表示するためにAWS RDSの外部データベースに接続しようとしています。

私の唯一の問題は、外部データベースに接続し、そこから情報を引き出すことです。

また、外部データベースの情報も更新できるようにする必要があります。

私は$awsdb = new wpdb( 'username', 'password', 'database', 'localhost' );を使用しようとしていますが、うまくいっていないようです。

RDSは通常のMySQLデータベースとはアクセス方法が少し異なります。RDSには慣れていません。

私が取り組まなければならない詳細は以下のとおりです。

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

私は正しいと思う方法で情報を配置してきました:

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

しかし、それはうまくいかないようです。

私はまたポートを追加して試しました:

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

私はちょっとパズルにこの些細な部分を見失っています。

これは私が外部テーブルに保存されたユーザー名のリストを表示することを試みることによってテストしている機能です:

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

注:実際の接続資格情報を省略し、プレースホルダーテキストを使用しました。

1
Benbodhi

次のコードを使用して、正常に接続できるようになりました。

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