1

プラグインが機能しなかったため、独自のお気に入りの投稿ソリューションを作成しています。そこで、2列のユーザーIDと投稿IDを持つwp_favoritesというWPデータベースに新しいテーブルを作成しました。私はすでに挿入を行っており、機能しています。テーブルからデータを取得するのに問題があります。コードは次のとおりです。

function is_favorite($pid, $uid) 
{
    global $wpdb;

    $q = $wpdb->prepare("SELECT * FROM wp_favorites WHERE uid=$uid AND pid=$pid;");
    echo $q;
    $res = $wpdb->get_results($q);
    var_dump($res);
    return(count($res)>0);
}

出力 ($q) をコピーして PHPmyAdmin に挿入すると、完全に機能します。ただし、 $res の出力は常に空の配列 (array(0) { } ) です。準備をせずに試してみましたが、他のバリエーションもいくつか試しましたが、うまくいきません。

お気に入りの投稿を表示しようとすると、同じことが起こります。

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

<?php 

get_header();
get_sidebar();

global $wpdb;
$q = "
    SELECT * FROM wp_favorites
    LEFT JOIN wp_posts ON wp_favorites.pID = wp_posts.ID
    WHERE wp_favorites.uID = 1      
";

 $pageposts = $wpdb->get_results($q, OBJECT);

 var_dump($pageposts);

?>

    <div id='content_and_floater'>

        <?php get_template_part('social_floater'); ?>
        <div id='content'>
            <?php get_template_part('loop'); ?>
        </div>

    </div>

<?php
get_footer();
?>

結果は、やはり空の配列です。何か案は ?

4

4 に答える 4

0

サンプル データベース テーブル

| uid | pid |
|-----|-----|
| 1   | 10  |
| 1   | 5   |

PHP 関数とテスト ケース

function is_favorite($pid, $uid)
{
  global $wpdb;
  $results = $wpdb->get_results( $wpdb->prepare("SELECT * FROM wp_favorites WHERE uid=$uid AND pid=$pid"), ARRAY_A );
  print_r($results);
  return (count($results) > 0);
}

echo 'Test 1';
$test1 = $this->is_favorite(10, 1);
var_dump($test1);

echo 'Test 2';
$test2 = $this->is_favorite(100, 1);
var_dump($test1);

試験結果・プリントアウト

Test 1
Array
(
    [0] => Array
        (
            [uid] => 1
            [pid] => 10
        )

)
bool(true)

Test 2
Array
(
)
bool(true)

WordPress 3.4.1 でテスト済み

于 2012-09-07T05:42:50.047 に答える
-1

そうであってはならget_result()ないと思いますget_results()

于 2014-06-26T02:06:53.420 に答える