[转]wordpress主题中的独立 php 文件如何链接到数据库?

一般情况下,wordpress主题文件是不需要我们添加链接数据库的,wordpress程序会自动帮它链接上。但是,在我们开发wordpress主题时,可能会用到独立的 php 文件,它们不是wordpress主题内嵌文件,比如:经常用到的“点赞”功能文件、AJAX加载更多……,这些功能都会用到独立的php处理文件,如果这些php文件需要获取数据库数据,就必需链接到数据库。那么,wordpress主题中的这些独立的 php 文件如何链接到数据库呢?

情况一:知道数据库信息的情况下

如果你知道网站的数据库信息,如:数据库服务器路径、数据库名、数据库用户名、数据库密码,这时,你可以直接在php文件中添加数据库链接。比方说:

数据库服务器路径: http://localhost
数据库名:user
数据库用户名:user
数据库密码:345463

这时,我们直接在这个独立的php文件中添加如下代码:

define("DB_HOST","localhost");
define("DB_USER","user");
define("DB_PWD","345463");
define("DB_NAME","user");
$conn = @mysql_connect(DB_HOST,DB_USER,DB_PWD) or die("连接服务器出错:".mysql_error());
@mysql_select_db(DB_NAME) or die("连接数据库出错:".mysql_error());
@mysql_query('SET NAMES UTF8');
//然后可以对数据库数据操作

情况二:不知道数据库信息的情况下

当然,对自己的网站那是肯定知道数据库信息的,如果你是wordpress主题开发者,而这些新开发的主题你又想让更多的人使用,甚至想买卖这些wordpress主题,这时,我们就不知道用户们的网站的数据库信息了。这时,我们就不能通过上面的方法来链接数据库了。

其实,wordpress程序自身就有链接数据库的文件,就是wordpress根目录下的wp_config.php文件,这个文件中就有数据库信息,我们只需要引用这个文件,就可以直接使用这些数据库信息了。但是,我们又不能使用固定的绝对路径来引用这个文件,因为不同的网站,绝对路径是不一样的。这时,我们就必须通过php方法来动态获取到这个绝对路径。代码如下:

//获取当前文件所在目录
define("__S__",str_replace("\\","/",dirname(__FILE__)));
/*获取wordpress所在目录,这里要位移取决于最后面的那个数字,现在调整为33,为了说的更清楚,举例:s.substr(a,b);的意思是从字符串s下标为a开始去字符中取出b个字符!
*这里就是以根目录下标为0,开始去字符取出33个字符,如果我把33改成0,那么得出的路径是“/wp-config.php”,如果我多取33个那么就变成“/wwwroot/webroot/www.kelin601.com/wp-config.php”,不同的路径长度可能不一样,需要调整这个值
*/
define("__ROOT__",substr(__S__,0,33));
//引用wp-config.php文件,获取数据库信息
require(__ROOT__."/wp-config.php");

这里我补充一下:以上的这些代码目的就是为了引入wordpress根目录下的配置文件,这个方法有它的弊端,但是也有它的好处,弊端是这个通过截取字符串长度来获取配置文件的路径长度,这个值可能会随着以后网站的迁移,或者根目录路径更换而不一样,比如我现在的路径刚好需要33个字符长度就能输出:/wwwroot/webroot/www.kelin803.com/wp-config.php,但是我换了一个目录或者服务器的时候,wp-config.php路径可能是/wwwroot/www.kelin803.com/wp-config.php,这个时候字符就不是33了而是25了。当然,好处是这种方法能够让我们通过修改这个长度达到任意路径的目的。我们可以去到/wwwroot/webroot/www.kelin803.com/wp-content,也可以到/wwwroot/webroot。

基于这个方法的弊端,我给出另外一个方案:

$wordpressroot=$_SERVER['DOCUMENT_ROOT'];
require_once("$wordpressroot/wp-config.php");

同样可以达到以上的目的。

然后,再通过wp-config.php文件中的数据库常量来链接数据库,代码如下:

//链接mysql 服务器
$conn = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("连接服务器出错:".mysql_error());
//链接网站所在数据库
mysql_select_db(DB_NAME) or die("连接数据库出错:".mysql_error());
//设置字符编码
@mysql_query('SET NAMES UTF8');

这样,我们所开发的wordpress主题中的 php 独立文件就可以在任何网站上自动链接到数据库了。好了,就介绍到这里,如果你也想让你的主题中的php独立文件链接到数据库,可以试试上面的2种方法吧,当然,我是推荐使用第二种方法,因为,它不需要你修改任何代码。

根据自己的检验,最后连接数据库的时候遇到了问题,报错了,报错码如下:

Call to undefined function mysql_connect() in xxx/xxx

最后在这里找到了解决方案:

$myconnection = mysqli_connect('xxxxxxxx','xxxxxx','xxxxxx');
mysqli_select_db($myconnection,$register );
$query_Recordset1 = "SELECT * FROM `application`";
$Recordset1 = mysqli_query($myconnection, $query_Recordset1 ) or die(mysqli_error($myconnection));
$row_Recordset1 = mysqli_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysqli_num_rows($Recordset1);

 

未经允许不得转载:哈勃私语 » [转]wordpress主题中的独立 php 文件如何链接到数据库?

本文共2700个字 创建时间:2018年1月8日19:04   

分享到:更多 ()