$ wpdb-> get_results()不起作用

时间:2012-08-19 17:12:07

标签: php wordpress

我正在创建自己喜欢的帖子解决方案,因为插件不起作用。 所以我在WP数据库中创建了一个名为wp_favorites的新表,其中包含2个cols用户ID和帖子ID。 我已经完成了插入工作。我从表中获取数据时遇到问题。这是代码:

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 个答案:

答案 0 :(得分:1)

问题是sql语句$ q = $ wpdb-&gt; prepare(&#34; SELECT * FROM wp_favorites WHERE uid = $ uid AND pid = $ pid;&#34;);

使用prepare时,需要使用占位符。我在这里更正了代码:

SELECT t1.[ID], t1.[Number], t1.[Qty], t1.[OrderNumber], t1.[Date]
FROM #tempo AS t1
WHERE NOT EXISTS (SELECT 1 
    FROM #tempo AS t2
    WHERE t2.ID = t1.ID 
      AND t2.Number = t2.Number 
      -- **and other columns if needed**    
      AND t2.RowNum > t1.RowNum)

答案 1 :(得分:0)

示例数据库表

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

PHP功能&amp;测试用例

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上测试

答案 2 :(得分:0)

我也坐在这个问题上。我通过My​​sql Workbench运行查询并返回结果。然后运行程序并返回无结果。

我的问题是我在工作台中更改了一个值,并且没有提交我的更改。

答案 3 :(得分:-1)

相信它应该是get_result()而不是get_results()