WeCenter 学习笔记--用户搜索功能

本文介绍了一种处理数组数据的方法,特别是在构建SQL查询时如何根据不同数量的数组元素来生成相应的where条件。通过具体示例展示了当数组元素数量变化时,如何调整SQL语句以确保查询的准确性。

搜索

  • 分析
    (主要是处理数组数据的问题)

    1. eg: $q = array("Volvo","BMW","Toyota");
      输入数据为数组 且 数组元素大于一个的时候 ,
      where[] = user_name= 'Volvo BMW Toyota' OR user_name = 'VolvoBMWToyota'

    2. eg: $q = array("Volvo");
      输入数据为数组 且 数组元素等于一个的时候 ,
      where[] = user_name= 'Volvo%'

    3. eg: $q = "Volvo"
      输入数据为不为数组 的时候 ,
      where[] = user_name= 'Volvo%'

  • 代码
    public function search_users($q, $page, $limit = 20)
    {
        if (is_array($q) AND sizeof($q) > 1)
        {
            $where[] = "user_name = '" . $this->quote(implode(' ', $q)) . "' OR user_name = '" . $this->quote(implode('', $q)) . "'";
        }
        else
        {
            if (is_array($q))
            {
                $q = implode('', $q);
            }

            $where[] = "user_name LIKE '" . $this->quote($q) . "%'";
        }

        return $this->query_all('SELECT uid, last_login FROM ' . get_table('users') . ' WHERE ' . implode(' OR ', $where), calc_page_limit($page, $limit));
    }

quote过滤函数

  • 代码
    /**
     * 添加引号防止数据库攻击
     *
     * 外部提交的数据需要使用此方法进行清理
     *
     * @param   string
     * @return  string
     */
    public function quote($string)
    {
        if (is_object($this->db()))
        {
            $_quote = $this->db()->quote($string);

            if (substr($_quote, 0, 1) == "'")
            {
                $_quote = substr(substr($_quote, 1), 0, -1);
            }

            return $_quote;
        }

        if (function_exists('mysql_escape_string'))
        {
            $string = @mysql_escape_string($string);
        }
        else
        {
            $string = addslashes($string);
        }

        return $string;
    }
搭建自己的知乎,#WeCenter 问答系统简介 --- WeCenter 问答系统是一套开源的社交化问答软件系统。作为国内首个推出基于 PHP 的社交化问答系统,WeCenter 期望能够给更多的站长或者企业提供一套完整的社交问答系统,帮助社区或者企业搭建相关的知识库建设。 ###WeCenter 问答系统的下载 您可以随时从我们的官方下载站下载到最新版本,以及各种补丁 [http://www.wecenter.com/downloads/][1] ###WeCenter 问答系统的环境需求 1. 可用的 www 服务器,如 Apache、IIS、nginx, 推荐使用性能高效的 Apache 或 nginx. 2. PHP 5.2.2 及以上 3. MySQL 5.0 及以上, 服务器需要支持 MySQLi 或 PDO_MySQL 4. GD 图形库支持或 ImageMagick 支持, 推荐使用 ImageMagick, 在处理大文件的时候表现良好 ###WeCenter 问答系统的安装 1. 上传 upload 目录中的文件到服务器 2. 设置目录属性(windows 服务器可忽略这一步) 以下这些目录需要可读写权限 > ./ ./system ./system/config 含子目录 3. 访问站点开始安装 4. 参照页面提示,进行安装,直至安装完毕 ###WeCenter 问答系统在 Sina App Engine 安装 参见这篇文章: [http://www.wecenter.com/category/support/sae-install/][2] ### WeCenter Rewrite 开启方法 参见这篇文章: [http://www.wecenter.com/category/support/settings/][2] ### WeCenter 问答系统的升级 升级过程非常简单, 覆盖所有文件之后运行 http://您的域名/index.php?/upgrade/ 按照提示操作即可 ###WeCenter 软件的技术支持 当您在安装、升级、日常使用当中遇到疑难,请您到以下站点获取技术支持。 - 支持:http://www.wecenter.com/support/ - 讨论区:http://wenda.wecenter.com [1]: http://www.wecenter.com/downloads/ [2]: http://www.wecenter.com/category/support/sae-install/
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值