0

Wordpressデータベースのカスタムテーブルに接続するカスタムphpコードを使用して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>";
  }
}
}
?>

何か案が???

4

1 に答える 1

0

それはどのように$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)
);

基本的にはprintf構文ですが、「値の番号付け/値の交換」の部分はありません。つまり、このタイプのものです%2$s$wpdb->prepare便利ですが、そのためあまり良くありません。

于 2012-10-17T05:15:17.410 に答える