亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

ThinkPHP2.0讀取MSSQL提示Incorrect syntax near the keyword 'AS'的解決方法

 更新時間:2014年06月25日 15:39:28   投稿:shichen2014  
這篇文章主要介紹了ThinkPHP2.0讀取MSSQL提示Incorrect syntax near the keyword 'AS'的解決方法,需要的朋友可以參考下

問題代碼如下:

<?php 
class IndexAction extends Action{ 
  public function index(){ 
    /* 
    $Model = new Model(); 
    $test = $Model->query('select top 10 * from f_city'); 
    dump($test); 
    */ 
    $CityModel = M('city'); 
    $CityModel->find(); 
    dump($CityModel); 
  } 
} 
?>

出現的情況是使用 query 可以正確讀取到數據,而使用M方法,則無法讀取,會報出 Incorrect syntax near the keyword 'AS'. 錯誤
原因是DbMssql.class.php驅動的查詢語句有問題。

由于TP2.0 的 MSSQL 驅動是對SQL 2005有效,但對2000版本則無效,原因是2000版本里沒有 ROW_NUMBER 功能,2005才有這個功能作用好像是對數據分頁提供便利和效能。

希望官方能夠給TP2.0加一個2000的驅動吧,目前采用的臨時處理方法是修改ThinkPHP\Lib\Think\Db\Driver\DbMssql.class.php ,將行 25 的 protected $selectSql 在前面加 '//' 
并且第326行 的

public function parseLimit($limit) { 
      if(emptyempty($limit)) $limit=1; 
  $limit    =    explode(',',$limit); 
  if(count($limit)>1) 
    $limitStr    =    '(T1.ROW_NUMBER BETWEEN '.$limit[0].' + 1 AND '.$limit[0].' + '.$limit[1].')'; 
      else 
    $limitStr = '(T1.ROW_NUMBER BETWEEN 1 AND '.$limit[0].")"; 
  return $limitStr; 
} 

改為:

public function parseLimit($limit) { 
  return ''; 
}

這樣更改后,基本可以滿足一般的SQL需求,但不能使用LIMIT,因為 MSSQL 2000 的LIMIT方法是以 top N
這樣實現的;

如果覺得麻煩,那么就結合 Adodb 類庫吧,這個對MSSQL支持相對好很多。要結合 Adodb 類庫我的方法如下:

首先下載 Adodb 類庫并解壓到 ThinkPHP 的 Vendor 目錄中,并把 adodb.inc.php 改名為 adodb.php
然后在項目的 Lib 里建立一個 CommonAction.class.php 內容為

<?php 
class CommonAction extends Action { 
  public $dbsql; 
  function _initialize() { 
    Vendor('adodb5.adodb'); 
    $adodb = ADONewConnection(C('DB_TYPE')); 
    $adodb->Connect(C('DB_HOST'), C('DB_USER'), C('DB_PWD'), C('DB_NAME')); 
    $adodb->SetFetchMode(ADODB_FETCH_ASSOC); 
    $this->dbsql = $adodb; 
  } 
} 
?>

在項目的其他文件中都要引用到這個 CommonAction.class.php 文才能使用 ADODB,例如:
 

<?php 
class IndexAction extends CommonAction { 
  public function index() { 
    $query = $this->dbsql->Execute('select * from xxx'); 
    while($rows = $query->FetchRow()) { 
        echo $rows['fields']; 
     } 
  } 
} 
?>

這樣既能使用 Thinkphp 的模塊進行簡單的數據查詢也能使用 Adodb 進行分頁數據的查詢,實在是沒辦法中的辦法了,這個是個笨辦法哦,還是希望 ThinkPHP 能夠出一個 MSSQL 2000 版本能用的完美驅動。

相關文章

  • Laravel框架實現利用中間件進行操作日志記錄功能

    Laravel框架實現利用中間件進行操作日志記錄功能

    這篇文章主要介紹了Laravel框架實現利用中間件進行操作日志記錄功能,結合實例形式分析了Laravel框架中間件的創(chuàng)建、引入以及使用中間件進行操作日志記錄功能的相關實現技巧,需要的朋友可以參考下
    2018-06-06
  • php 實現301重定向跳轉實例代碼

    php 實現301重定向跳轉實例代碼

    本文主要介紹php 實現301重定向跳轉,通過實例代碼讓大家更好的理解重定向的方法,有需要的小伙伴可以參考下
    2016-07-07
  • PHP 搜索查詢功能實現

    PHP 搜索查詢功能實現

    這篇文章主要介紹了PHP 搜索查詢功能的實現代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-11-11
  • 實例分析10個PHP常見安全問題

    實例分析10個PHP常見安全問題

    在本篇文章里小編給各位分享了關于10個PHP常見安全問題以及相關實例代碼,需要的朋友們學習參考下。
    2019-07-07
  • smarty內置函數capture用法分析

    smarty內置函數capture用法分析

    這篇文章主要介紹了smarty內置函數capture用法,實例分析了capture的三種常見用法,需要的朋友可以參考下
    2015-01-01
  • PHP實現微信提現功能

    PHP實現微信提現功能

    這篇文章主要為大家詳細介紹了PHP實現微信提現功能,企業(yè)付款到用戶零錢,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • PHP中使用mpdf 導出PDF文件的實現方法

    PHP中使用mpdf 導出PDF文件的實現方法

    這篇文章主要介紹了PHP中使用mpdf 導出PDF文件的實現方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-10-10
  • PHP中ajax無刷新上傳圖片與圖片下載功能

    PHP中ajax無刷新上傳圖片與圖片下載功能

    本文給大家分享php ajax無刷新上傳圖片與圖片下載功能的實現代碼,非常不錯,具有參考借鑒價值,需要的的朋友參考下
    2017-02-02
  • 如何使用php生成zip壓縮包

    如何使用php生成zip壓縮包

    這篇文章主要介紹了如何使用php生成zip壓縮包,對壓縮感興趣的同學,可以實驗一下
    2021-04-04
  • PHP+jQuery 注冊模塊開發(fā)詳解

    PHP+jQuery 注冊模塊開發(fā)詳解

    本文主要是記錄了開發(fā)PHP+jQuery注冊模塊的全過程,包含填寫欄目用戶名、郵箱、密碼、重復密碼、驗證碼等,非常的詳細,推薦給大家
    2014-10-10

最新評論