我正在努力为自己的帖子制作评分系统。首先,我创建了一个自定义表,其中包含post_id,post_title_,用户IP,用户计算机,发布率,用户名,用户ID,时间戳。 到目前为止一切都很好,我可以在没有任何问题的情况下将数据插入此表。接下来我试图创建一个函数来验证用户是否已经投票,不允许用户为每个帖子评分超过一次,所以创建了这个函数
function alreadyvoted($post_id) {
// variables
global $wpdb;
$table_name = $wpdb - > prefix.
"ratings_fansub";
$ip = $_SERVER['REMOTE_ADDR'];
$rate_userid = get_current_user_id();
$rate_user_machine = @gethostbyaddr($ip);
// getting data from databaase by current post_id
$results = $wpdb - > get_results('SELECT * FROM $table_name WHERE ratings_fansub_postid = $post_id ');
$NumRows = count($results);
$RandNum = rand(0, $NumRows);
$i = 0;
while ($i < $RandNum):
if ($rate_userid != 0) {
if ($rate_userid == $results[$RandNum] - > ratings_fansub_username)
return 1;
} else {
if ($rate_user_machine == $results[$RandNum] - > ratings_fansub_host or $ip == $results[$RandNum] - > ratings_fansub_ip)
return 1;
}
$i++;
endwhile;
}
但是这个函数不起作用,我相信我在sql行的某个地方犯了一个错误,但我无法弄清楚它是什么。
答案 0 :(得分:0)
请检查数据库中的表名。表名如&#34; wp_ratings_fansub&#34;或不。
或者你也可以打印表名&#39; echo $ wpdb - &gt; 。前缀#&34; ratings_fansub&#34 ;;出口();&#39; 并检查数据库表名是否匹配。