Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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按标题搜索最近100条记录_Php_Mysql - Fatal编程技术网

Php mysql按标题搜索最近100条记录

Php mysql按标题搜索最近100条记录,php,mysql,Php,Mysql,我的情况是,当有人在我的新闻网站上发布60万条记录的数据时, 他们可以创建一个相同的标题,有人刚刚在过去几个小时发布了相同的主题 data: sid|title|desc|timestamp|userid 我通常使用: select sid from ".$prefix."_stories WHERE title = '".$subject."' limit 0,1 它在所有数据中搜索$subject,然后注意海报是否有相同的标题。 我需要一个搜索最后100条记录的查询 我尝试了以下方法,但

我的情况是,当有人在我的新闻网站上发布60万条记录的数据时, 他们可以创建一个相同的标题,有人刚刚在过去几个小时发布了相同的主题

data: sid|title|desc|timestamp|userid
我通常使用:

select sid from ".$prefix."_stories WHERE title = '".$subject."' limit 0,1
它在所有数据中搜索
$subject
,然后注意海报是否有相同的标题。 我需要一个搜索最后100条记录的查询

我尝试了以下方法,但无效:

select sid from ".$prefix."_stories WHERE title = '".$subject."' and sid > MAX(sid)-100 limit 0,1

您可以使用返回最后100个
sid
的子查询来执行此操作。注意,为了简洁起见,我省略了PHP连接

SELECT
  last100.sid
FROM
  (
    SELECT
      sid,
      title
    FROM $prefix._stories 
    ORDER BY sid DESC LIMIT 100
  ) last100
WHERE
  last100.title = '$subject'

假设您有一个主键,每个记录递增1(将最新记录放在底部),只需执行以下操作:

SELECT sid, title
FROM ".$prefix."_stories
ORDER BY sid DESC 
LIMIT 100
这将选择最后100条记录

迈克尔在我的评论中的观点很好。。。编辑代码并进一步注释:

删除where子句,这将选择最后100条记录。。。运行循环检查标题或摘要是否已存在:

while ($row = $result) {
   if $subject = $row['title'] {
      $duplicate = TRUE;
      endwhile;
   }
}
只需比较结果数据。感谢Michael

按sid排序(降序,因此最新条目排在第一位),并将结果限制为100:

$sql = "select t.sid from (select sid, title from ".$prefix."_stories ORDER BY sid DESC LIMIT 0,100) t WHERE title = '".$subject."';"

请确保选中$subject以避免SQL注入(更好的方法是:使用准备好的语句/PDO)。

这将返回多达100个匹配的标题,而不是搜索最近添加的100条记录以查找
$subject
。。这仍然会收集所有记录中标题相同的所有sid,然后显示最后100条记录。。事实上,我只需要搜索最后100条记录。。无论如何谢谢你@BinhNguyen否,没有
WHERE
,并且假设
sid
是您的主键,这将收集输入数据库的最后100条记录。如果
sid
不是您的主键,则在
中选择
并在
sid前面输入您的主键,title
,将
ORDER BY
sid
更改为主键,它将收集数据库中最后(最新)100条记录。谢谢!我测试了这个查询,但它不工作,没有找到结果:)谢谢!我以前对这个查询进行过测试,但结果不准确。。例如:数据有120条记录:标题为“aaa”的记录sid=50,标题为“aaa”的记录sid=120,标题为“aaa”的记录sid=120,现在我测试使用您的查询进行搜索,它只显示id=50的记录,因此找不到id=120的最后一条记录!真糟糕。。有什么理想的吗?对不起,我没有纠正查询中的一些输入错误。。实际上它工作得很好good@BinhNguyen我想会的。欢迎来到堆栈溢出。请单击答案旁边的复选标记,将答案标记为已接受。这与我最初的答案相同。正如Michael在我的评论中指出的,这将收集多达100条包含
标题
$subject
的记录,而不是搜索最后100条记录。