Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP/MySQL使用长查询检查表间数据_Php_Mysql_Mysqli - Fatal编程技术网

PHP/MySQL使用长查询检查表间数据

PHP/MySQL使用长查询检查表间数据,php,mysql,mysqli,Php,Mysql,Mysqli,这是一个更详细的问题,因为我之前的尝试不够清楚。我是MySQL新手,不知道做某些事情的最佳方法。我正在为图像构建一个投票应用程序,但在MySQL的一些细节方面遇到了问题 我的数据库 _投票 身份证件 选民身份证 图像识别码 _图像 身份证件 文件名 参赛者身份证 经核准的 _使用者 身份证件 ... 基本上,我需要做以下工作: 汇总所有通过的投票 选出得票最多的前五名 检查用户是否从另一个表中对这5个返回布尔值中的每一个进行了投票 我试过各种各样的 SELECT i.id, i.file_nam

这是一个更详细的问题,因为我之前的尝试不够清楚。我是MySQL新手,不知道做某些事情的最佳方法。我正在为图像构建一个投票应用程序,但在MySQL的一些细节方面遇到了问题

我的数据库

_投票

身份证件 选民身份证 图像识别码 _图像

身份证件 文件名 参赛者身份证 经核准的 _使用者

身份证件 ... 基本上,我需要做以下工作:

汇总所有通过的投票 选出得票最多的前五名 检查用户是否从另一个表中对这5个返回布尔值中的每一个进行了投票 我试过各种各样的

SELECT i.id, i.file_name, i.total_votes
FROM _images i WHERE i.approved = 1 
CASE WHEN (SELECT count(*) from _votes v WHERE v.image_id = i.id AND v.voter_id = ?) > 0 THEN '1' ELSE '0' END 'hasvoted'
ORDER BY i.total_votes DESC LIMIT ".($page*5).", 5
这是我应该尝试在一个查询中完成的事情吗

在我尝试添加“HasVote”布尔值之前,此查询运行良好:

SELECT id, file_name, total_votes FROM _images WHERE approved = 1 ORDER BY total_votes DESC LIMIT ".($page*5).", 5

目前,我还在“图像”表中存储选票计数,我知道这是错误的,但我不知道如何按图像id统计选票,然后进行排序。

让我试一试,看看我是否理解您的问题:

SELECT i.*,(SELECT COUNT(*) FROM _votes WHERE i.id = image_id) AS total_votes, (SELECT count(*) from _votes where i.id = image_id and user_id = ?) as voted  FROM _images AS i WHERE i.approved = 1

_image.approved上的列定义是什么?实际上,出现了一个错误,并意识到我正在使用mysqli prepared语句可能很重要:$stmt=mysqli\u prepare$connection,选择I.*,选择countfrom _vows,其中I.id=image\u id为total\u vows,选择countfrom _vows,其中I.id=image\u id和user\u id=?根据_imagesas i投票,其中i.approved=1;[Thu Jun 09 16:00:27 2011][error][client 192.168.1.113]PHP警告:mysqli_stmt_bind_param期望参数1为mysqli_stmt,布尔值在…中给出。我建议首先直接在mysql中测试查询,以确保其正常工作。这个查询确实有一个用户id的绑定标记。绑定工作正常,但我会尝试直接使用user\u id应该是voter\u id,然后我会更接近它。表决返回的是一个数字,而不是布尔值