Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.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 我得到了重复的数据_Php_Mysql - Fatal编程技术网

Php 我得到了重复的数据

Php 我得到了重复的数据,php,mysql,Php,Mysql,我有两张表,一张是电影,另一张是电影票,总共23张 请参见下面的屏幕截图了解胶片表结构 下面是电影投票表的结构 我想在胶片表“ano”列中显示用户_id=8163的所有记录以及按年份描述的订单 我使用每页限制12条记录,这意味着分页是存在的。但是当我运行一些记录时,它们在第二页中是重复的 下面是我的代码 $memID = 8163; SELECT a.cartel,a.cartel_es,a.cartel_vo,a.titulo_es,a.titulo,a.titulo_url,a.fech

我有两张表,一张是电影,另一张是电影票,总共23张

请参见下面的屏幕截图了解胶片表结构

下面是电影投票表的结构

我想在胶片表“ano”列中显示用户_id=8163的所有记录以及按年份描述的订单

我使用每页限制12条记录,这意味着分页是存在的。但是当我运行一些记录时,它们在第二页中是重复的

下面是我的代码

$memID = 8163;
SELECT a.cartel,a.cartel_es,a.cartel_vo,a.titulo_es,a.titulo,a.titulo_url,a.fecha_es,a.genero,a.ano,b.user_id,b.movie_id,b.rating FROM film a, film_votes b WHERE a.peli_id=b.movie_id AND b.user_id=$memID  ORDER BY a.ano DESC LIMIT 0,12



SELECT a.cartel,a.cartel_es,a.cartel_vo,a.titulo_es,a.titulo,a.titulo_url,a.fecha_es,a.genero,a.ano,b.user_id,b.movie_id,b.rating FROM film a, film_votes b WHERE a.peli_id=b.movie_id AND b.user_id=$memID  ORDER BY a.ano DESC LIMIT 12,12
我不知道为什么会发生这种情况,也不知道为什么第二页会出现重复记录

请建议我如何解决这个问题以及我犯了什么错误


提前感谢您阅读第二页,您需要使用以下内容:

SELECT a.cartel,a.cartel_es,a.cartel_vo,a.titulo_es,a.titulo,a.titulo_url,a.fecha_es,a.genero,a.ano,b.user_id,b.movie_id,b.rating FROM film a, film_votes b
    WHERE a.peli_id=b.movie_id AND b.user_id=$memID
    ORDER BY a.ano DESC
    LIMIT 12, 12
限制
是这里的关键。语法是:

LIMIT [Start], [Length]

你试过SQL左连接吗

比如:

SELECT a.cartel,a.cartel_es,a.cartel_vo,a.titulo_es,a.titulo,a.titulo_url,a.fecha_es,a.genero,a.ano,b.user_id,b.movie_id,b.rating
FROM film a
LEFT JOIN film_votes b
ON a.peli_id=b.movie_id 
WHERE b.user_id=$memID 
ORDER BY a.ano DESC LIMIT 0,12;
改变

继续下一页时,描述限制12、12等24、12


更多信息:

似乎您正在为所有页面执行相同的代码。所以你需要做一点动态,像这样

$page=1;//receive the page number.lets assume 1 for first page 2 for 2nd page
//$page=$_GET['page'];you can receive it this way 

$start=($page-1)*12;//calculate starting index
//现在让您的查询如下所示

SELECT a.cartel,a.cartel_es,a.cartel_vo,a.titulo_es,a.titulo,a.titulo_url,a.fecha_es,a.genero,a.ano,b.user_id,b.movie_id,b.rating FROM film a, film_votes b WHERE a.peli_id=b.movie_id AND b.user_id=$memID  ORDER BY a.ano DESC LIMIT $start,12

你们两个代码之间应该有什么不同?看起来是一样的:-)第二页需要
限制12,12
。两个代码都是一样的。这就是为什么你会得到重复的结果。@Shaiful Islam和Praveen Kumar是的,我在提问时出错了,但实际上极限是0,12和12,12,我在提问时出错了,但实际上极限是0,12和12,12哦,好的,让我再次检查你的问题,给你一个更好的
左连接解决方案。你认为左连接在那里有效吗?左连接意味着从左表中获取记录,如果我们使用table1左连接table2,则从table1中获取所有匹配的记录,但我需要从两个表中获取所有匹配的记录