Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Wordpress:500内部服务器错误,使用$wpdb时可能出现问题_Php_Mysql_Wordpress_Mamp - Fatal编程技术网

Php Wordpress:500内部服务器错误,使用$wpdb时可能出现问题

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(

我正在使用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($_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
    不报告任何内容 大约
  • 我的表现在是空的,但是如果它们不打印任何内容,就会产生错误
你能提出一些建议吗

编辑

我在控制台中看到这个错误

MySQL表为空

我的Wordpress调试处于活动状态,如下所示:

我的
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()
可能会解决