Php Wordpress:500内部服务器错误,使用$wpdb时可能出现问题
我正在使用Wordpress并执行一个查询,该查询返回以下错误: 加载资源失败:服务器响应状态为500 (内部服务器错误) 我的查询如下所示:Php Wordpress:500内部服务器错误,使用$wpdb时可能出现问题,php,mysql,wordpress,mamp,Php,Mysql,Wordpress,Mamp,我正在使用Wordpress并执行一个查询,该查询返回以下错误: 加载资源失败:服务器响应状态为500 (内部服务器错误) 我的查询如下所示: global $wpdb; $session_uid = isset($_POST["session_uid"]) ? trim(strip_tags($_POST["session_uid"])) : ""; $the_data = isset($_POST["the_data"]) ? trim(strip_tags(
global $wpdb;
$session_uid = isset($_POST["session_uid"]) ? trim(strip_tags($_POST["session_uid"])) : "";
$the_data = isset($_POST["the_data"]) ? trim(strip_tags($_POST["the_data"])) : "";
$ss = "select * from ".$wpdb->prefix."vp_pms_messages inner join ".$wpdb->prefix."vp_pms_group_users on ".$wpdb->prefix."vp_pms_messages.id = ".$wpdb->prefix."vp_pms_group_users.message_id and ".$wpdb->prefix."vp_pms_messages.group_id = ".$wpdb->prefix."vp_pms_group_users.group_id where ".$wpdb->prefix."vp_pms_group_users.from_username = '$session_uid' and ".$wpdb->prefix."vp_pms_group_users.from_del = '0' or ".$wpdb->prefix."vp_pms_group_users.to_username = '$session_uid' and ".$wpdb->prefix."vp_pms_group_users.to_del = '0' group by ".$wpdb->prefix."vp_pms_messages.group_id";
$check_last_conversation = $wpdb->get_results($ss);
$response = print $check_last_conversation;
我可能遗漏或误解了某些内容,但如果我注释掉$check\u last\u conversation
并打印出类似“Hello”的内容,错误就会消失
这没关系:
global $wpdb;
$session_uid = isset($_POST["session_uid"]) ? trim(strip_tags($_POST["session_uid"])) : "";
$the_data = isset($_POST["the_data"]) ? trim(strip_tags($_POST["the_data"])) : "";
//$ss = "select * from ".$wpdb->prefix."vp_pms_messages inner join ".$wpdb->prefix."vp_pms_group_users on ".$wpdb->prefix."vp_pms_messages.id = ".$wpdb->prefix."vp_pms_group_users.message_id and ".$wpdb->prefix."vp_pms_messages.group_id = ".$wpdb->prefix."vp_pms_group_users.group_id where ".$wpdb->prefix."vp_pms_group_users.from_username = '$session_uid' and ".$wpdb->prefix."vp_pms_group_users.from_del = '0' or ".$wpdb->prefix."vp_pms_group_users.to_username = '$session_uid' and ".$wpdb->prefix."vp_pms_group_users.to_del = '0' group by ".$wpdb->prefix."vp_pms_messages.group_id";
//$check_last_conversation = $wpdb->get_results($ss);
$response = print 'hello';
因此,我想在如何编写查询方面存在一些问题
$ss = "select * from ".$wpdb->prefix."vp_pms_messages inner join ".$wpdb->prefix."vp_pms_group_users on ".$wpdb->prefix."vp_pms_messages.id = ".$wpdb->prefix."vp_pms_group_users.message_id and ".$wpdb->prefix."vp_pms_messages.group_id = ".$wpdb->prefix."vp_pms_group_users.group_id where ".$wpdb->prefix."vp_pms_group_users.from_username = '$session_uid' and ".$wpdb->prefix."vp_pms_group_users.from_del = '0' or ".$wpdb->prefix."vp_pms_group_users.to_username = '$session_uid' and ".$wpdb->prefix."vp_pms_group_users.to_del = '0' group by ".$wpdb->prefix."vp_pms_messages.group_id";
尽管如此,我看不出错误
- 我的
和apache\u error.log
不报告任何内容 大约mysql\u error\u log.err
- 我的表现在是空的,但是如果它们不打印任何内容,就会产生错误
debug.log
文件(wp内容)未显示代码中的任何错误
我发现我的查询的同一个文件中有一个致命错误: PHP致命错误:调用未定义函数
get\u bloginfo()
我可以通过服务器php错误日志检查它。使用MAMP,您可以在此处找到:
MAMP/logs/php_error.log
在我的例子中,Wordpress没有在
wp content/debug.log
中报告它。所以你知道。这让我得出结论,我的file.php无法识别wordpress钩子,也可能发生在$wpdb上,在我的整个查询过程中。在开发过程中始终打开错误报告,以了解警告
注意
或致命错误
,如果您忘了什么或错过了什么,这些错误很容易发生。因此,最好注意错误,打开错误报告以查看错误,并在生产中禁用错误报告
$ss = "select * from ".$wpdb->prefix."vp_pms_messages inner join ".$wpdb->prefix."vp_pms_group_users on ".$wpdb->prefix."vp_pms_messages.id = ".$wpdb->prefix."vp_pms_group_users.message_id and ".$wpdb->prefix."vp_pms_messages.group_id = ".$wpdb->prefix."vp_pms_group_users.group_id where ".$wpdb->prefix."vp_pms_group_users.from_username = '$session_uid' and ".$wpdb->prefix."vp_pms_group_users.from_del = '0' or ".$wpdb->prefix."vp_pms_group_users.to_username = '$session_uid' and ".$wpdb->prefix."vp_pms_group_users.to_del = '0' group by ".$wpdb->prefix."vp_pms_messages.group_id";
进入wp-config.php文件并搜索:define('wp_DEBUG',false)并将其更改为定义('WP_DEBUG',true)强>
即使您的查询没有问题,您仍然会导致一个错误,这是由于不正确地打印数组而导致的:
$wpdb
的函数get_results
,是一个函数,它将返回一个数组作为多行的结果,要转储它,请使用:
print_r($check_last_conversation);
或
打印“你好”
之所以有效,是因为它是一个字符串,$check\u last\u conversation
是一个数组。不要将print\u r
或var\u dump
或print
或echo
包装在变量内。因为他们应该打印变量中的数据
因此,如果您有更多错误,您可以通过打开错误报告来查看错误。在开发过程中始终打开错误报告以了解
警告
注意
或致命错误
,如果您忘记了什么或错过了什么,这些错误很容易发生。因此,最好注意错误,打开错误报告以查看错误,并在生产中禁用错误报告
进入wp-config.php文件并搜索:define('wp_DEBUG',false)并将其更改为定义('WP_DEBUG',true)强>
即使您的查询没有问题,您仍然会导致一个错误,这是由于不正确地打印数组而导致的:
$wpdb
的函数get_results
,是一个函数,它将返回一个数组作为多行的结果,要转储它,请使用:
print_r($check_last_conversation);
或
打印“你好”
之所以有效,是因为它是一个字符串,$check\u last\u conversation
是一个数组。不要将print\u r
或var\u dump
或print
或echo
包装在变量内。因为他们应该打印变量中的数据
因此,如果您有更多错误,您可以通过打开错误报告来查看错误。正如OP提到的,他正在处理外部wordpress脚本,无法访问他的wordpress功能。为了确保在外部文件上保留wordpress功能,请在外部脚本页面的开头添加以下代码
$path = $_SERVER['DOCUMENT_ROOT'];
include_once $path . '/wp-load.php';
以上几行将包括脚本的所有wordpress功能
$path
变量存储wordpress安装文件夹的路径。正如OP提到的,他正在处理外部wordpress脚本,无法访问他的wordpress功能。为了确保在外部文件上保留wordpress功能,请在外部脚本页面的开头添加以下代码
$path = $_SERVER['DOCUMENT_ROOT'];
include_once $path . '/wp-load.php';
以上几行将包括脚本的所有wordpress功能
$path
变量存储wordpress安装文件夹的路径。类似于Ajit的答案。我也有类似的问题,这是由字符排序引起的,通过添加一行额外的字符来修复
在使用wpdb的任何php外部文件的顶部,我使用了以下内容:
$path = $_SERVER['DOCUMENT_ROOT'];
include_once $path . '/wp-load.php';
global $wpdb;
$charset_collate = $wpdb->get_charset_collate();
然后可以在sql语句中使用$charset\u collate,例如
$sql = "CREATE TABLE `{$wpdb->base_prefix}my_nice_table` (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id)
) $charset_collate;";
希望有帮助 有点像是从Ajit的答案开始的。我也有类似的问题,这是由字符排序引起的,通过添加一行额外的字符来修复 在使用wpdb的任何php外部文件的顶部,我使用了以下内容:
$path = $_SERVER['DOCUMENT_ROOT'];
include_once $path . '/wp-load.php';
global $wpdb;
$charset_collate = $wpdb->get_charset_collate();
然后可以在sql语句中使用$charset\u collate,例如
$sql = "CREATE TABLE `{$wpdb->base_prefix}my_nice_table` (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id)
) $charset_collate;";
希望有帮助 更改
$response=打印$check\u last\u对话代码>到<代码>打印\r$check\u last\u对话)代码>@ArshSingh尝试过,但什么都没有!我得到了相同的答案。请阅读下面我的答案。您得到的结果是数组。使用json\u encode()
可能会解决