Wordpress短代码访问数据库及“500 - 内部服务器错误”的解决方案

一、背景
最近在做网站,想要在网页上显示数据库的字段,查了一下可以用Wordpress的短代码功能实现,并遇到“500 - 内部服务器错误"问题。
二、如何用短代码访问数据库?
下面用一个例子来说明,注意这里的数据表是在建立wordpress网站时的数据库,根据官方文档的说明,链接其他数据库也可以,但是需要另外配置链接信息(这个我还没试过)。
1.将下面这段代码插入到functions.php中(可以在服务器进入主题文件夹中打开,也可以直接在wp后台中外观-主题编辑-模板函数(functions.php)打开)

function showdata() {
	global $wpdb;
	//引用全局变量,并将变量$wpdb变为对象实例(原理不是很懂,但这个语句就直接将$wpdb变为类wpdb的对象实例),wpdb类定义在wp-inludes/wp-db
	$fivesdrafts=$wpdb->get_results("select cal_name from caltech");
	//调用$wpdb对象的get_results方法,括号内的参数可以是Mysql的任意指令,并将结果赋值给变量$fivesdrafts
	//这里我用了"select 字段名 from 表名"查询表名中字段名的内容
	foreach ( $fivesdrafts as $fivesdraft ) {
    echo $fivesdraft->cal_name;
	}
}
//短代码函数调用设置,第二个参数是段代码函数名,第一个参数是在文章中调用的函数名(可以与短代码函数名不一致);
//经过调用设置后在文章中输入[第一个参数名](此处为[showdata])即可调用段代码
add_shortcode('showdata', 'showdata');

2.在文章或页面中输入[showdata]发布后就可以显示相应字段
三、数据库访问出错处理
如果插入短代码后显示“500 - 内部服务器错误。 您查找的资源存在问题,因而无法显示。”,请不要着急,首先我们要先找到原因。
1.将网站的错误页面设置为返回详细错误信息。(设置步骤请[点击这里](https://blog.csdn.net/weixin_44588907/article/details/105369935))
2.按照错误信息提示,找到根源后再去解决问题。
这里举个例子,我在用短代码访问数据库的时候出现“ Call to a member function get_results() on null”翻译过来就是“调用成员函数get_results()时为null”的错误信息。然后我发现之前的get_results函数的参数(即Mysql命令)有问题:
(1)出现500错误的代码

$fivesdrafts = $wpdb->get_results( 
    "
        SELECT cal_name 
        FROM $wpdb->caltech
        WHERE cal_id='0'
    "
);

(2)改动后正常显示的代码

	$fivesdrafts=$wpdb->get_results("select cal_name from caltech");

原因就是之前用的参数是从官网demo直接搬过来的,可能是Mysql的版本不一致,也可能是内嵌的wpdb类没有考虑到其他数据表的查询,所以导致命令无法识别,改成你自己的数据库命令即可(可以在数据库终端先测试一下命令)。
四、参考文档
1.Wordpress官方参考文档(https://developer.wordpress.org/reference/classes/wpdb/#top)
2.mariaDB数据库常用命令(https://www.cnblogs.com/yunweibai/p/10885884.html)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值