I ajax模糊搜索(PDO方式查询)

这个跟mysqli大同小异,只写了关键部分代码
demo地址 http://pan.baidu.com/s/1o8kBYpc

getdata.php

<?php

    /*/header("Content-type:text/html;charset=gbk");
    //数据库配置信息(用户名,密码,数据库名,表前缀等)
    $cfg_dbhost = "localhost";
    $cfg_dbuser =  "root";
    $cfg_dbpwd = "root";
    $cfg_dbname = "ajaxtest";
    $cfg_dbprefix = "";//*/

/////////////配置数据库部分,实际应用中应该有统一的配置文件/////////////////////
    header('Content-Type:text/html;Charset=gbk');
    define('DB_DSN', 'mysql:host=localhost;dbname=ajaxtest');
    define('DB_USER', 'root');
    define('DB_PWD', 'Wanda2013');
    /*/ 自动加载文件类     这里因为是模拟,所以把自动加载的类都写在了一个页面
    function __autoload($className) {
        require_once ROOT_PATH . '/includes/'. ucfirst($className) .'.class.php';
    }*/

////////////////////////数据库连接类////////////////////////
    class Db {
        static public function getDB() {
            try {
                $pdo = new PDO(DB_DSN, DB_USER, DB_PWD);
                $pdo->setAttribute(PDO::ATTR_PERSISTENT, true);    // 设置数据库连接为持久连接
                $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  // 设置抛出错误
                $pdo->setAttribute(PDO::ATTR_ORACLE_NULLS, true);  // 设置当字符串为空转换为 SQL 的 NULL
                $pdo->query('SET NAMES gbk');  // 设置数据库编码
            } catch (PDOException $e) {
                exit('数据库连接错误,错误信息:'. $e->getMessage());
            }
            return $pdo;
        }
    }

///////////////////////数据查询类//////////////////////////////
    class Model {   
    /**
     * 返回单条数据
     * @param string $tName 表名
     * @param string $keywords 查找的关键字
     * @param string or array $fields 返回的字段,默认是*
     * @return PDOStatement
     */
    public function search($tName, $keywords, $fields) {
        try {
            if (!is_string($tName) || !is_string($keywords) || !is_string($fields)) exit($this->getError(__FUNCTION__, __LINE__));
            $pdo = Db::getDB();
            $data = $pdo->query("SELECT {$fields} FROM {$tName} WHERE {$fields} like '%{$keywords}%' order by click desc limit 0,9");
            //$data = $pdo->query("SELECT title FROM article WHERE title like '%p%' order by click desc limit 0,9");
            $pdo = null;
            return $data;
        } catch (PDOException $e) {
            exit($e->getMessage());
        }
    }
}

/////////////////////调取类////////////////////////
    $m = new Model();
    $keywords = iconv("utf-8","gbk//IGNORE",$_POST['keywords']);
    //改变传值的编码类型为gbk
    $res = $m->search('article', $keywords , 'title');

///////////////遍历每一行//////////////////////
    $row = $res->fetchAll(PDO::FETCH_NUM);

///////////////获取查询数据条数/////////////////////
    $mNums = count ($row);

    /*///测试输出
    print_r($row);

    foreach($row as $val){  
    echo $val[0].'<br>';  
    }               //测试打印这个数组,查看正常不正常
    echo "</br>";
    print_r($mNums);   //打印查询到的数据条数
    echo "</br>";
    //*/

    //$mNums = mysql_num_rows($res);
    //$row = mysql_fetch_array($res);
    if($mNums<1){
        echo "no";
        exit();
    }else{
        $result="[";
        foreach($row as $val){  
            //echo $val[0].'<br>';  
            $result.="{'keywords':'$val[0]'},";
        } 
        $result.=']';
        echo $result;
    }

    //print_r($result);

    $res = null;
?>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值