E库技术学院--您的网络技术顾问! 网站首页素材图片库设计原稿网页模板网站赏析下载中心明星图库E库论坛  
E库技术学院
设为首页
加入收藏
我要投稿
E库首页学院首页 ┊ 图形图象 ┊ 网页设计 ┊ 网络编程 ┊ 数据库 ┊ 服务器 ┊ 建站技术 ┊ 业界新闻 ┊ 作者专栏 ┊ 常用范文 ┊ 预留栏目
  当前位置:学院首页>>网络编程教程>>PHP编程教程>>php开发中实用的两条sql
php开发中实用的两条sql
[ 来源:CSDN | 作者: | 时间:2005-11-26 12:54:24 | 浏览:人次 ]
收藏到新浪ViVi收藏到365KEY收藏到我摘 ┊ 双击滚屏 单击停止

这两天项目开发中,需要实现一些比较实用的功能,用了两个使用的sql,总结一下,怕下次忘记了。

1. 检索数据库中跟提交的内容相匹配的内容

比如:提交的数据是“游泳”,那么数据库中有“我喜欢游泳”字样的就算是匹配,但是这样一来,还是不够,比如我提交的是“周末去游泳”,数据库中有“游泳”的内容,其实意思类似,但是却使用like找不到的,于是想到下面的sql,已经封装成函数了:

 function getRelationTags($tagTitle,$cols="*")
 {
  $titleFeildStrLen = 24; //3*8 四个汉字或者24个字符.
  if ("" == $tagTitle) return false;
 
  $sql = "select  $cols from ".$TableName." where title != '' and (LOCATE(title,'$tagTitle') or ((issystem = 1 or LENGTH(title) <= $titleFeildStrLen) and title like '%".$tagTitle."%' )) order by LENGTH(title) ";
  $data  =& $db->getAll($sql);
  if(DB::isError($data)){
   return $this->returnValue($data->getMessage());
  }else{
   return $data;
  }
 }

看sql:

select  $cols from ".$TableName." where title != '' and (LOCATE(title,'$tagTitle') or ((issystem = 1 or LENGTH(title) <= $titleFeildStrLen) and title like '%".$tagTitle."%' )) order by LENGTH(title)

其实就是两次匹配,一次是正向匹配,就是把提交的标签跟数据库中标签进行匹配,第二次是把数据库中的标签跟提交的标签进行匹配。

关键在LOCATE()函数,同时也限制了长度,因为mysql中的编码是:

set names 'utf8'

就是是utf8的,那么一个汉字要占用3个字节,字符只占用1个字节,所以上面的:

  $titleFeildStrLen = 24;

就是8个汉字和24个字符范围那的标签进行匹配。

2. 同类排序

数据库中比如是这样的内容:

北京     1023       1

天津     2301       1

上海    3450       1

天津    4520       1

北京    3902       1

那么我要提取所有的城市数据,并且把每种城市数据的总数跟别的城市总数进行比较后排序。

函数代码如下:

 function getMostCity($num)

 {

    $sql = "select count(id) as num,city from ".$TableName." where city != '' group by city order by num desc limit 0,$num;";

  $data =& $db->getAll($sql);

  if($db->isError($data))

   return false;

  else

   return $data;

 }

我们关注一下上面的sql语句:

select count(id) as num,city from ".$TableName." where city != '' group by city order by num desc limit 0,$num

核心就是 group by city  把类似城市集中起来后按照多到少排序。

Author:  heiyeluren

writeTime: 2005-07-01  14:35

“php开发中实用的两条sql”教程到此结束==>||
 相关教程
php开发中实用的两条sql
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

投稿作者:  信息来源: CSDN 录入时间: 2005-11-26 12:54:24
投稿信箱: web#iecool.com
设为首页 - 加入收藏 - 关于我们 - 广告服务 - 版权申明 - 友情链接 - 联系方式 - 会员投稿
E库技术学院 © 2004-2005 Edu.IEcool.Com  浙ICP备05015070号