连接到外部Oracle数据库

时间:2019-06-25 作者:Eli

因此,我试图连接到外部db,以便访问/更新位于不同非wordpress数据库(oracle)上的信息。

我尝试构建一个新的wpdb对象(正如stack exchange上的许多其他帖子所建议的那样),如下所示:

function initialize_rgr_db() {
   global $rgr_db;
   $rgr_db = new wpdb(\'usr\', \'pw\', \'sid\', \'host\');
} 
然而,当vardumping$rgr\\u db对象时,我不断遇到“连接到数据库时出错”

调试。日志显示以下内容:

PHP Warning:  mysqli_real_connect(): (HY000/2003): Can\'t connect to MySQL server on \'host\' (111) in /home/dowxx543z3a1/public_html/wp-includes/wp-db.php on line 1612
或者,我尝试像这样使用oci\\u connect:

$conn = oci_connect(\'usr\', \'pw\', \'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(Host=host)(Port=1521)))(CONNECT_DATA=(SID=sid)))\');
if(!$conn) {
        error_log(\'DB CONNECTION ERROR NOOO\');
        die();
}
...
但后来我调用了未定义的函数。

根据我的发现,似乎oci8没有安装在wordpress中。我在网上找到了关于如何在xampp或本地环境中安装oci8的说明,但与wordpress无关,坦率地说,我害怕把事情搞砸。

所以,这是我的问题。如果有人能告诉我wpdb有什么问题,我很想知道。我猜可能是先知sid!=wpdb需要作为第三个参数的dbname。

否则,是否有人可以提供一些关于如何安装oci8(通过cpanel)的指导?

非常感谢你。

2 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

You can\'t use WPDB to connect to databases that aren\'t MySQL/MariaDB based.

没有WordPress API或基于WP的解决方案可以做到这一点。相反,您需要在插件中使用通用PHP解决方案,并且应该查看通用PHP资源和社区,而不是WP资源和社区。

我还可以保证,这将需要安装额外的PHP扩展,而不仅仅是PHP代码。这样做需要root用户访问服务器,并且需要您的主机参与。

您应该向stack overflow咨询如何使用该PHP扩展,向Serverfault咨询如何安装它,无论哪种方式,您都已经离开了WordPress的专业知识领域。

顺便提一下,您是否考虑过在另一端设置一个REST API?

SO网友:ChristopherJones

你试过PDO课程了吗?

$db = new PDO("sqlsrv:Server=YouAddress;Database=YourDatabase", "Username", "Password");
如果失败了,我认为您可能需要在WordPress托管环境中设置特定的驱动程序来与Oracle DB进行对话。(至少要让PDO类正常工作)https://www.php.net/manual/en/ref.pdo-oci.php