[英]$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上测试
我也坐在这个问题上。 我通过Mysql Workbench运行查询并返回结果。 然后运行该程序,则不返回任何结果。
我的问题是我更改了工作台中的值并且没有提交更改。
我相信应该是get_result()
而不是get_results()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.