我正在使用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_last_conversation
而print
类似于" 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_error.log
和mysql_error_log.err
没有报告任何内容
约。你能建议吗?
修改
我在控制台中看到此错误
MySQL表空
我的Wordpress Debug处于活动状态,如:
我的debug.log
文件(wp-content)在我的代码中没有显示任何错误。
我发现在我的查询的同一文件中存在致命错误:
PHP致命错误:调用未定义的函数
get_bloginfo()
我可以通过服务器php错误日志检查它。在MAMP上工作,你可以在这里找到它:
MAMP /日志/ php_error.log
就我而言,Wordpress并未在wp-content/debug.log
中报告。所以你知道。我得出的结论是,我的file.php不能识别wordpress钩子,并且在我的查询中也可能发生$ wpdb。
答案 0 :(得分:1)
在开发过程中始终打开错误报告,以了解warnings
notice
或fatal errors
,如果您忘记或错过,这可能非常容易发生放点东西。因此,最好注意或错误并打开错误报告以查看错误,并在生产中确实禁用错误报告。
进入wp-config.php文件并搜索: define('WP_DEBUG',false); 并将其更改为 define('WP_DEBUG',true);
即使您的查询没问题,您仍然会导致错误,由于数组打印错误而导致错误:
get_results
的函数$wpdb
是一个函数,它将返回一个数组作为多行的结果,并且对于转储它使用:
print_r($check_last_conversation);
或
var_dump($check_last_conversation);
print 'hello;
有效,因为它是一个字符串,而$check_last_conversation
是一个数组。不要将print_r
或var_dump
或print
或echo
包裹在变量中。因为他们应该从变量中打印数据。
因此,如果您有更多错误,可以通过启用错误报告来查看错误。
答案 1 :(得分:0)
由于OP提到他正在研究外部wordpress脚本,并且无法访问他的wordpress功能。为确保您在外部文件中保留wordpress功能,请在外部脚本页面的开头添加以下代码。
$path = $_SERVER['DOCUMENT_ROOT'];
include_once $path . '/wp-load.php';
以上几行将包含脚本的所有wordpress功能。 $path
变量存储wordpress安装文件夹的路径。
答案 2 :(得分:0)
按照Ajit的回答排序。我也遇到了类似的问题,这是由字符归类引起的,该问题已通过添加多行来解决。
在使用wpdb的任何php外部文件的顶部,我正在使用以下内容:
$path = $_SERVER['DOCUMENT_ROOT'];
include_once $path . '/wp-load.php';
global $wpdb;
$charset_collate = $wpdb->get_charset_collate();
然后您可以在sql语句中使用$ charset_collate,例如
$sql = "CREATE TABLE `{$wpdb->base_prefix}my_nice_table` (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id)
) $charset_collate;";
希望有帮助!