在表中查找set_id的IP地址是否存在


Searching in table to find if IP address exists for a set_id

我在项目中遇到了绊脚石,需要一些指导。我需要实现一个模型查询,返回一个mysql_num_rows -我认为。我要做的是在我的页面上,我有一个评级小部件,记录投票的人的IP地址。我不希望这个人投票超过一次。当我做一个返回mysql_num_rows,我得到一个错误说

警告:mysql_num_rows()只期望1个参数,给定0

这是我的模型

    public function getRatingByIp($ipAddress)
{
    $sql = sprintf ("SELECT ip_address FROM " . $this->_prefix . "media_set_rating
                WHERE set_id = set_id");
    mysql_query($sql);
    return mysql_num_rows();
}

这是我为控制器所做的:

$setId  = $this->_request->getParam('set_id');
$ipAddress = $this->_request->getClientIp();
$ipAddress = $setDao->getRatingByIp($setId);
$this->_view->assign('ip_address', $ipAddress);
$this->_view->assign('set_id', $setId);

然后在视图中,我想执行if else语句来显示或隐藏评级表单。我现在就有这个:

<?php if ($this->ipAddress > 0) : ?>
  "message"
<?php else: ?>
  "rating form"
<?php endif; ?>

也许是我在代码中缺少的东西,或者可能有一个更简单的方法?谢谢你的帮助。

美国东部时间5月28日12:28修订

if Else的修改代码如下

<?php if ($this->ip_address > 0) : ?>
  "message"
<?php else: ?>
  "rating form"
<?php endif; ?>

查询代码与Eduardo发布的完全一样!

再次感谢!

您应该在查询中使用资源:

public function getRatingByIp($ipAddress)
{
    $sql = "SELECT ip_address FROM " . $this->_prefix . " media_set_rating WHERE set_id = " . $ipAddress);
    $result = mysql_query($sql);
    return mysql_num_rows($result);
}

你不应该使用mysql_num_rows,因为它已经被弃用了。

参考:http://php.net/manual/en/function.mysql-num-rows.php