尝试使用插件写入数据库时出错

时间:2017-03-16 作者:Maltese Falcon

在得到@majick的良好响应后,我解决了一个我试图访问的问题wp-config.php 来自插件。我已将插件中使用的连接文件设置为:

function find_require($file,$folder=null) {

    if ($folder === null) {$folder = dirname(__FILE__);}

    $path = $folder.\'/\'.$file;

    if (file_exists($path)) {require($path); return $folder;}
    else {
        $upfolder = find_require($file,dirname($folder));
        if ($upfolder != \'\') {return $upfolder;}
   }
}

$configpath = find_require(\'wp-config.php\');

require_once($configpath.\'\\wp-config.php\');
$conn = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD);
mysqli_select_db($conn, DB_NAME);
有了它,我可以加载我的表内容,但当涉及到修改表内容时,我遇到了一个问题。表已更新,但出现以下错误:

Warning: mysqli\\u query()要求参数1为mysqli,中给出了null...\\wp-content\\plugins\\editdb\\editdatabase.php 在第145行

Warning: mysqli\\u error()要求参数1为mysqli,中给出了null...\\wp-content\\plugins\\editdb\\editdatabase.php 在第150行

获取表时出错:

Warning: mysqli\\u close()要求参数1为mysqli,中给出了null...\\wp-content\\plugins\\editdb\\editdatabase.php 在第175行

当页面使用下拉选择列表重新加载时,列表现在为空,不包含数据库中的任何员工姓名。

我知道这与在插件中执行而不是在主题中执行有关,但我不知道为什么会出现空值。

为了在使用之前提供一些视角,我已经硬编码了wp-config 插件中的信息connect.php 文件和一切都起作用了,但由于明显的原因,这不是最佳做法。

1 个回复
最合适的回答,由SO网友:WebElaine 整理而成

您不必读取wp config来获取数据库凭据。WordPress具有内置功能,通常对此类操作更安全。

在插件中,只需调用global $wpdb;

您将连接到WP数据库。然后,您可以执行所需的任何查询-选择、更新、添加等。例如:

$results = $wpdb->get_results( \'SELECT * FROM wp_options WHERE option_id = 1\', OBJECT );

请参见https://codex.wordpress.org/Class_Reference/wpdb 有关详细信息。这应该比读入凭据和手动连接更安全、更容易。