Php 在Wordpress模板中使用$wpdb时获取空白页

Php 在Wordpress模板中使用$wpdb时获取空白页,php,mysql,wordpress,Php,Mysql,Wordpress,我试图创建一个带有自定义php代码的Wordpress模板,该模板连接Wordpress数据库中的自定义表,但它显示了一个空白页面 <?php /* Template Name: JNTU */ ?> <?php function doSomething() { global $wpdb; $current_user = wp_get_current_user(); if ( 0 == $current_user->ID ) { // Not logged in. }

我试图创建一个带有自定义php代码的Wordpress模板,该模板连接Wordpress数据库中的自定义表,但它显示了一个空白页面

<?php
/*
Template Name: JNTU
*/
?>

<?php
function doSomething() {
global $wpdb;
$current_user = wp_get_current_user();
if ( 0 == $current_user->ID ) {
// Not logged in.
} else {
$id = $_POST['ID'];

 $add = $wpdb->prepare("SELECT SUM(tech) AS tech4 FROM (
(SELECT SUM(tm) AS tech FROM jbit WHERE id = :id)
UNION ALL
(SELECT SUM(tm) AS tech FROM hmm WHERE id = :id))t1");
$add -> execute(array(':id'=>$id));
echo " <center><table id='mytable' cellspacing='0'  border=3 align=center> 
<tr><TH scope='col'>Total Marks</TH> </tr><center>"; 
while ($row1 = $add->fetch(PDO::FETCH_ASSOC))
{
 echo "<tr>"; 
 echo "<td align=center>" . $row1['tech4']. "</td>";
 echo "</tr>";
  }
}
}
?>


有什么想法吗?

这不是
$wpdb->prepare
的工作原理
$wpdb->prepare
获取一个字符串并返回一个字符串。
$wpdb
类中没有execute方法。你想要的是:

$wpdb->get_results(
    $wpdb->prepare("SELECT SUM(tech) AS tech4 FROM (
      (SELECT SUM(tm) AS tech FROM jbit WHERE id = %d)
      UNION ALL
      (SELECT SUM(tm) AS tech FROM hmm WHERE id = %d)
    )",$id,$id)
);

基本上是这样,但没有“值编号/值交换”部分——即,这种类型的东西——
%2$s
$wpdb->prepare
很有用,但也不是很好。请尝试启用php配置中的显示错误,以检查服务器日志。空白页主要表示发生了错误,但由于您的服务器配置未打印我已启用但仍显示空白页,我可以在您的服务器中找到任何错误消息检查
错误日志
文本文件。不管怎样,1)脚本是否调用该函数?2) 如果用户未登录,他会看到什么?3) use
是在中使用的\u wp\u error
,用于更好地调试。$wpdb->prepare方法不会生成对象。只有一个准备好的SQL字符串。您试图对该字符串调用execute方法,这将导致错误。