【问题标题】:After select sum php and mysql give me an error - subquery returns more than one row?选择 sum php 和 mysql 后给我一个错误 - 子查询返回多行?
【发布时间】:2014-01-31 11:16:42
【问题描述】:

我制作了一些投票脚本,用户可以在其中投票赞成或反对某些答案。当我只有一个问题的答案时,它工作正常。如果我对一个问题给出两个或多个答案,则会收到错误 subquery returns more than one row

$rezultati = mysqli_query($con,"SELECT SUM(down) as down 
FROM vote  WHERE answerId = 
(SELECT questionId FROM answers WHERE questionId = $id)");

while($row = mysqli_fetch_array($rezultati))
{

echo $row['down'];

}
mysqli_close($con);
?>

这是向上按钮,向下是类似的。 (我知道有更简单的方法可以做到这一点,但我是 php 新手..) 这是表格问题

CREATE TABLE IF NOT EXISTS `questions` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`question` text NOT NULL,
`user` varchar(255) NOT NULL,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

表答案

CREATE TABLE IF NOT EXISTS `answers` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`answer` text COLLATE utf8_unicode_ci NOT NULL,
`questionId` int(11) NOT NULL,
`user` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
 )

表投票

CREATE TABLE IF NOT EXISTS `vote` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ip` varchar(50) NOT NULL,
`answerId` int(11) NOT NULL,
`up` int(11) NOT NULL,
`down` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;

问题出在哪里?如何解决?谢谢!!

【问题讨论】:

  • "IN" 会为您解决这个问题 - 但它不会真正触及问题的核心
  • 我认为你应该使用 IN 。 SELECT SUM(down) as down FROM vote WHERE answerId IN (SELECT answerId FROM answers WHERE questionId = $id)
  • 你需要 answerId 而不是问题 ID 对吗?
  • 如果我把 IN 然后我得到这个 'mysqli_fetch_array() 期望参数 1 是 mysqli_result,布尔值在 C:\wamp\www\mysite\up.php 第 11 行给出...

标签: php mysql subquery vote


【解决方案1】:

根据您的问题,我了解到您想列出对某个问题的所有反对票。然后,如果您将列updown 更新为表answers,则查询很简单。

"SELECT SUM(down) as down 
FROM answers WHERE questionId = $id)"

【讨论】:

    猜你喜欢
    • 2014-08-02
    • 1970-01-01
    • 2014-02-15
    • 2011-03-13
    • 2017-05-29
    • 2015-03-25
    • 1970-01-01
    • 1970-01-01
    • 2015-04-11
    相关资源
    最近更新 更多