求一段PHP查询MYSQL的代码

wontao 2010-08-03 09:11:31
就是查询一条记录在MYSQL中是第几行,用处是LIMIT来读上一个和下一个记录。

在就是可否在查询记录中添加判断,比如查询的这个记录有一个类别,查这个类别有多少条记录,它是第几条。

反正最终的目的就是为了一条记录,然后显示它上一条记录的名称和下一条记录的名称。

期待高手,感激不尽。俺的MYSQL自学,基本只会查询修改插入这些简单的,今日膜拜学习来了。
...全文
189 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wontao 2010-08-03
  • 打赏
  • 举报
回复
结帖了,wcunw 也很不错,提你一点点分数给他可以吧。很感激CSDN各位的指点。

[Quote=引用 10 楼 amani11 的回复:]

第几个可以这样

PHP code


$sql = "SELECT (count(*) + 1) AS num FROM `article` WHERE sortid=".$sortid . " AND id<" . $_GET['id'];
//执行后,的结果,就是第几个
[/Quote]
wontao 2010-08-03
  • 打赏
  • 举报
回复
还有什么好说的,怎一个牛字了的,感谢指点,这个语句大概的意思是,获取类别sortid中id小于当前ID的记录总数,然后加一,就等于是当前ID所在当前类别的位置。
感谢感谢!!
[Quote=引用 10 楼 amani11 的回复:]

第几个可以这样

PHP code


$sql = "SELECT (count(*) + 1) AS num FROM `article` WHERE sortid=".$sortid . " AND id<" . $_GET['id'];
//执行后,的结果,就是第几个
[/Quote]
amani11 2010-08-03
  • 打赏
  • 举报
回复
第几个可以这样



$sql = "SELECT (count(*) + 1) AS num FROM `article` WHERE sortid=".$sortid . " AND id<" . $_GET['id'];
//执行后,的结果,就是第几个



wontao 2010-08-03
  • 打赏
  • 举报
回复
很感谢,这个已经学到了,我想知道的有没有知道当前记录在当前类别中是第几条的
当前类别总条数

$counts = mysql_fetch_array(mysql_query("select count(*) from table where sortid = ".$storid."";
echo $counts[0];

但是怎么取得当前记录是当前类别的第多少条呢;
我是想实现上一个,下一个(已被你们解决)
当前 ".$当前第几条."(不知道怎么搞) / 总记录 $counts[0]
这样子可以让访问者看的更清楚一些

[Quote=引用 7 楼 amani11 的回复:]

PHP code


$sql = "SELECT * FROM `article` WHERE sortid=".$sortid . " AND id<" . $_GET['id'] . " ORDER BY id DESC LIMIT 1";/////上一条

$sql = "SELECT * FROM `article` WHERE sortid=".$sortid . " AND id……
[/Quote]
一只老菜鸟 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 amani11 的回复:]
PHP code


$sql = "SELECT * FROM `article` WHERE sortid=".$sortid . " AND id<" . $_GET['id'] . " ORDER BY id DESC LIMIT 1";/////上一条

$sql = "SELECT * FROM `article` WHERE sortid=".$sortid . " AND……
[/Quote]

感谢!!学习了。
amani11 2010-08-03
  • 打赏
  • 举报
回复


$sql = "SELECT * FROM `article` WHERE sortid=".$sortid . " AND id<" . $_GET['id'] . " ORDER BY id DESC LIMIT 1";/////上一条

$sql = "SELECT * FROM `article` WHERE sortid=".$sortid . " AND id>" . $_GET['id'] . " ORDER BY id ASC LIMIT 1";/////下一条
//这样子分两次查询,是常用的办法,你上面的,一下子搜索所有的数据,就失去数据库索引的意义了
//sortid id都加索引,这种查询效率会非常高
wontao 2010-08-03
  • 打赏
  • 举报
回复
感谢提供思路,但是没有SQL语句解决吗?现在仅仅只想知道当前数据在当前类别所有数据中是第几条,4楼可以做到,但是计算量有点多

[Quote=引用 1 楼 amani11 的回复:]

上一个,下一个,跟当前记录在第几行没关系

比如
我要求按照插入时间排序,那么前一行就是比这条早插入的,时间离着最近的

如果我要求修改时间的上一条呢,如果我要求权重最接近的上一条呢?……

--------------------------------------
所以,只要规定排序规则就好了, WHERE …AND条件… AND add_time<当前这条的时间 ORDER……
[/Quote]
wontao 2010-08-03
  • 打赏
  • 举报
回复
唉,思路啊,我咋这么没感觉。这个很不错。就是计算量大了点。这个就是可以获得记录在当前类别的行数。也可以说是第几条记录。但是没有SQL语句解决吗?现在仅仅只想知道当前数据在当前类别所有数据中是第几条

[Quote=引用 4 楼 wcunw 的回复:]

PHP code


$sql = "SELECT * FROM `article` WHERE sortid=".$sortid;
$rows = $db->getRows($sql);

$m = 0;
for($i=0;$i<count($rows);$i++){
if($rows[$i]["id"] == $_GET['id']){
$m = $i+1;
$ne……
[/Quote]
一只老菜鸟 2010-08-03
  • 打赏
  • 举报
回复


$sql = "SELECT * FROM `article` WHERE sortid=".$sortid;
$rows = $db->getRows($sql);

$m = 0;
for($i=0;$i<count($rows);$i++){
if($rows[$i]["id"] == $_GET['id']){
$m = $i+1;
$next = ($i<count($rows)-1)?$rows[$m]["id"]:"";
break;
}
}


这个是我获取当前id为$_GET['id']的下一条的id的方法,上一条的方法稍微变化一下就可以吧。

写得不好,也请别的老师能给点意见。
heyli 2010-08-03
  • 打赏
  • 举报
回复
是不是 类似于上一篇,下一篇的功能?
查询比当前ID小(where id < '.$id.'上一篇)和比当前ID大(where id > '.$id.'下一篇)的1条(limit 0,1)数据
xiaocai520 2010-08-03
  • 打赏
  • 举报
回复
你上一条和下一条 是根据创建数据的时间来排序的 你的上一条就是小于当前时间数据的第一条
你的下一条就是大于当前时间数据的第一条
用SQL语句来展示就是2楼的同学所说
amani11 2010-08-03
  • 打赏
  • 举报
回复
上一个,下一个,跟当前记录在第几行没关系

比如
我要求按照插入时间排序,那么前一行就是比这条早插入的,时间离着最近的

如果我要求修改时间的上一条呢,如果我要求权重最接近的上一条呢?……

--------------------------------------
所以,只要规定排序规则就好了, WHERE …AND条件… AND add_time<当前这条的时间 ORDER BY add_time DESC LIMIT 1就是add_time时间最接近的上一条

21,882

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧