数据库查询上的IF语句

时间:2010-11-23 作者:at least three characters

我正在编写的投票脚本的一部分:我正在检查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,即使它已经存在。

1 个回复
最合适的回答,由SO网友:ariefbayu 整理而成

在你的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.

结束