免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2349 | 回复: 5
打印 上一主题 下一主题

[求助]如何删除最老的一条记录? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-09 15:50 |只看该作者 |倒序浏览
初学PHP+MySQL,向各位大侠问一句:

以下是网站访问记录,十五的意思是,固定在100条,当第101条记录写入后,删除第1条记录,第102条到来时删除第2条。


  1. <?php

  2. $host="localhost";
  3. $login="root";
  4. $password="";
  5. $dbname="hent";
  6. $rectotal=100; //100条IP记录

  7. $connect=mysql_connect($host,$login,$password);
  8. $selectdb=mysql_select_db($dbname,$connect);

  9. $ip=$_SERVER["REMOTE_ADDR"];
  10. $port=$_SERVER["REMOTE_PORT"];
  11. $time=date("Y-m-d H:i:s");
  12. $browser=$_SERVER["HTTP_USER_AGENT"];
  13. $host=$_SERVER["REMOTE_HOST"];

  14. $sql="INSERT INTO guestrecord (ip,port,time,browser,host) VALUES ('$ip','$port','$time','$browser','$host')";

  15. $result=mysql_query($sql,$connect);
  16. $row=mysql_fetch_array($result);

  17. $firstrec=$row["rec"]-$rectotal;
  18. //得到最老的一条记录,但是这样做是错的,请问有什么办法得到最老的一条记录?比如 “WHER time为最老时间 LIMIT 1”请赐教

  19. $sql="DELETE FROM guestrecord WHERE rec='$firstrec' LIMIT 1";
  20. $result=mysql_query($sql,$connect);

  21. ?>
复制代码

论坛徽章:
0
2 [报告]
发表于 2005-11-09 16:08 |只看该作者
比较纯粹的SQL问题嘛,和 php 没有什么关系的啊,
数据表里面最好有个序号啊,自增长的就行。
然后就好解决了。

delete From tablea where seq=(select min(seq) from tablea)
注:MYSQL 要支持子查询。

论坛徽章:
0
3 [报告]
发表于 2005-11-09 16:25 |只看该作者
谢谢。我去试一下

论坛徽章:
0
4 [报告]
发表于 2005-11-09 17:03 |只看该作者

  1. $sql="SELECT min(rec) FROM guestrecord";
  2. $result=mysql_query($sql,$connect);
  3. $row=mysql_fetch_array($result);
  4. $oldrec=$row["rec"];

  5. $sql="DELETE FROM guestrecord WHERE rec=$oldrec LIMIT 1";
复制代码


在SQL执行中得到是最小行值,如min(rec)=12
但在PHP上面代码中得到的的$olderc=“空”,$result=Resource id #3。

没法得到 WHERE rec=12 LIMIT 1

没有成功,继续求助,十五比较笨,还烦请大侠赐教!

论坛徽章:
0
5 [报告]
发表于 2005-11-09 19:16 |只看该作者
原帖由 七月十五 于 2005-11-9 17:03 发表
[code]
$sql="SELECT min(rec) FROM guestrecord";
$result=mysql_query($sql,$connect);
$row=mysql_fetch_array($result);
$oldrec=$row["rec"];

$sql="DELETE FROM guestreco ...



SELECT min(rec)  as rec

注意别名的使用
建议你用MYSQL管理工具先执行一次SQL,可以看到对应的列名

论坛徽章:
0
6 [报告]
发表于 2005-11-10 08:46 |只看该作者

  1. SELECT * FROM `guestrecord`ORDER BY `rec`LIMIT 1
复制代码


现在我用的是时间戳定位,直接定位到时间最老的那一行,那个MIN()再研究一下。谢谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP