繁体   English   中英

$ wpdb-> get_results()不起作用

[英]$wpdb->get_results() not working

我正在创建自己喜欢的帖子解决方案,因为该插件无法正常工作。 因此,我在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();
?>

结果还是一个空数组。 有任何想法吗 ?

问题是sql语句$ q = $ wpdb-> prepare(“ SELECT * FROM wp_favorites WHERE uid = $ uid AND pid = $ pid;”);

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

$uid='3';// you can assign correct digits
$pid='5';$q = $wpdb->prepare("SELECT * FROM wp_favorites WHERE uid=%d AND pid=%d", $uid, $pid);

样本数据库表

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM