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;
?>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章