首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

解決 PHP 讀取 MSSQL ntext 欄位回傳空值的三種方案

     編輯:PHP 相關知識

問題背景

PHP 的 mssql 擴展不支援 ntext / nvarchar 等 Unicode 欄位,直接查詢會回傳空值。

方案一:修改資料表結構(最簡單)

將 ntext 改為 text,nvarchar 改為 varchar。

方案二:調整 php.ini 設定

; 原設定
mssql.textlimit = 4096
mssql.textsize = 4096

; 修改為最大值
mssql.textlimit = 2147483647
mssql.textsize = 2147483647

重啟 Web 伺服器生效。

方案三:SQL 查詢時轉型(不動結構、不改設定)

-- 錯誤寫法
SELECT title, content FROM article;

-- 正確寫法
SELECT CONVERT(VARCHAR(255), title) AS title,
       CONVERT(TEXT, content) AS content
FROM article;

將 Unicode 欄位在查詢層轉為非 Unicode 型別,PHP 即可正常讀取。

方案四:使用 ADOdb 庫(虛擬主機適用)

<?php
include('adodb/adodb.inc.php');
$conn = NewADOConnection('odbc_mssql');
$conn->Connect("Driver={SQL Server};Server=localhost;Database=mydb;", 'user', 'pass');
?>

ADOdb 內建處理 Unicode 欄位,無須修改 php.ini。

建議

優先考慮方案三(SQL 轉型),不影響資料結構且相容性最好;若無法修改 SQL,再嘗試方案二或四。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved