1

我正在创建自己喜欢的帖子解决方案,因为该插件不起作用。所以我在我的 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

4 回答 4

1

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

当您使用 prepare 时,您需要使用 placeholders 。我在这里更正了代码:

$uid='3';// you can assign correct digits
$pid='5';$q = $wpdb->prepare("SELECT * FROM wp_favorites WHERE uid=%d AND pid=%d", $uid, $pid);
于 2015-10-12T15:46:11.293 回答
1

我也坐在这个问题上。我通过 Mysql Workbench 运行查询并返回结果。然后运行程序并且不返回任何结果。

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

于 2017-11-02T07:28:58.987 回答
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 回答