我需要一些关于如何查询数据库表并查找一个人是否已经通过 IP 地址对某个项目进行投票的指导。我有一个存储 set_id、ip_address 和投票的表。一旦该人投票,它会显示一条消息,表明他们已经投票。这将通过一个If
声明来完成。
我在控制器中尝试了两种方法:
$setDao->getRatingByIp($ipAdress);
我要求这样做:
$ipAddress = $this->_request->getClientIp();
在 SQL 查询中,它返回 ip 地址,但我无法获取 set_id。
这是模型中的函数:
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);
}
我尝试的第二个是一个数组:
$ip = array();
$ip['set_id'] = $setId;
$ip['ip_address'] = $ipAddress;
$setDao->getRatingByIp($ip);
我认为这可能有效,但我不确定如何在上面的查询中实现它。我尝试了几种安排,但是当我进行 SQL 检查时它们都没有返回任何内容echo $sql; exit;
美国东部时间 5 月 29 日晚上 11:28 更新
这是整个(小部件)控制器:
protected function _prepareShow()
{
$setId = $this->_request->getParam('set_id');
$rating = $this->_request->getParam('rating');
$grades = $this->_request->getParam('grades');
$pageUrl = $this->_request->getPathInfo();
$ipAddress = $this->_request->getClientIp();
$limit = 3;
$conn = XXX_Db_Connection::factory()->getSlaveConnection();
$setDao = XXX_Model_Dao_Factory::getInstance()->setModule('media')->getSetDao();
$setDao->setDbConnection($conn);
$ip = array();
$ip['set_id'] = $setId;
$ip['ip_address'] = $ipAddress;
$setDao->getRatingByIp($ip);
$grades = $setDao->gradeRound($setId);
if ($this->_request->isPost('rating')) {
$rating = new Media_Models_Set(array(
'set_id' => $this->_request->getPost('setId'),
'ip_address' => $this->_request->getClientIp(),
'rating' => $this->_request->getPost('rating'),
));
$setDao->rate($rating);
$ratings = new Media_Models_Set(array(
'set_id' => $this->_request->getPost('setId'),
'rating' => $this->_request->getPost('rating'),
'grades' => $this->_request->getPost('grades'),
));
$setDao->averageRating($ratings);
$flashMessenger = Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger');
$flashMessenger->addMessage($this->_view->translator()->widget('send_rating_success'));
$redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('Redirector');
$redirector->gotoUrl($this->_view->APP_URL . $pageUrl . '#rateForm');
}
$this->_view->assign('ip', $ip);
$this->_view->assign('set_id', $setId);
$this->_view->assign('rating', $rating);
$this->_view->assign('grades', $grades);
}
作为我最后一次传递信息的尝试,该数组被留在了那里。
2013 年 5 月 31 日更新
我现在有一个可行的解决方案。这几天我一直在扔代码,最后我意识到了一些事情。一个是我一开始就没有 set_id。我要求它,但它没有以适当的方式完成。另一个是我在视图中包含 setId 并且不需要这样做。Orangpill 建议的以下代码我相信现在我有了 set_id 就可以工作了。但是我采取了不同的方法。感谢你的帮助。