我正在创建自己喜欢的帖子解决方案,因为插件不起作用。 所以我在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();
?>
结果又是一个空数组。 有什么想法吗?
答案 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)
我也坐在这个问题上。我通过Mysql Workbench运行查询并返回结果。然后运行程序并返回无结果。
我的问题是我在工作台中更改了一个值,并且没有提交我的更改。
答案 3 :(得分:-1)
我相信它应该是get_result()
而不是get_results()
。