如何连接到AWS RDS外部数据库(不适用于核心WordPress数据库)

时间:2018-05-28 作者:Benbodhi

我正在尝试连接到AWS RDS上的外部数据库,以使用我正在编写的插件在WordPress中显示外部数据库中的数据。

我唯一的问题是连接到外部数据库并从中提取信息。

此外,我还需要能够更新外部数据库中的信息。

我想用$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 个回复
最合适的回答,由SO网友: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\' );

结束

相关推荐

使用MySQL将一个自定义字段值替换为另一个自定义字段值

我有两个自定义字段,都有数值:tnid\\u 01tnid\\U 01旧所有帖子都存在自定义字段“tnid\\u 01”。自定义字段“tnid\\u 01old”仅适用于某些帖子。我正在尝试将“tnid\\u 01”的值替换为“tnid\\u 01old”,但前提是“tnid\\u 01old”存在。这就是我目前所知道的,但我得到了一个mysql错误:Update wp_postmeta (post_id, meta_key, meta_value)( SELECT post_id, \'tnid