我正在处理的投票脚本的一部分:我正在WP数据库中检查自定义表,以查看用户是否已经通过检查IP地址和帖子ID来投票选出了帖子。

如果用户的IP已经存在于他们投票的帖子中,我想回声“已经投票!”否则添加IP。这就是我想到的。

global $wpdb;
$voter_ip = $_SERVER['REMOTE_ADDR']; 
$post_id = $_POST['post_id'];

if (!($wpdb->get_row("SELECT voter_ip FROM wp_voter_ips WHERE post_id = $post_id AND voter_ip = $voter_ip") ) ) { //if IP address for matching post id not found in wp_voter_ips table
$wpdb->insert( $wpdb->prefix . 'voter_ips', array( 'post_id' => $post_id, 'voter_ip' => $voter_ip ) ); //add IP and post_id
echo "voted!";
}
else //if IP already exists
{
echo "Already voted!";
}

我进行了三重检查,以确保变量和列名是正确的。无论if声明如何,它都可以插入选民IP即使已经存在。

有帮助吗?

解决方案

在你的 if(), ,应该这样:

if (!($wpdb->get_row("SELECT voter_ip FROM " . $wpdb->prefix . "voter_ips WHERE post_id = $post_id AND voter_ip = '$voter_ip'")

注意添加的报价标记 $voter_ip.

许可以下: CC-BY-SA归因
scroll top