2012-10-16 45 views
0

我想創建自定義的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>"; 
    } 
} 
} 
?> 

任何一個空白頁時理念???

+2

嘗試在您的php配置中啓用display_errors來檢查服務器日誌。空白頁大多意味着發生了錯誤,但由於您的服務器配置未打印 – room13

+0

我已啓用但仍顯示空白頁,我可以找到任何錯誤消息 – Aryan

+1

檢查您的服務器是否有'error_logs'文本文件。無論如何,1)您的腳本是否調用該函數? 2)如果用戶沒有登錄 - 他會看到什麼? 3)使用http://codex.wordpress.org/Function_Reference/is_wp_error中使用的'is_wp_error'來更好的調試。 –

回答

0

這不是$wpdb->prepare的工作原理。 $wpdb->prepare接受一個字符串並返回一個字符串。 $wpdb類中沒有執行方法。 Check the Codex.你想要的是:

$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) 
); 

基本上它是printf syntax,但沒有「值編號/價值交換」,即曲子分爲,這種類型件事 - %2$s的。 $wpdb->prepare是有用的,但不是很好,因爲這一點。