Warning: mssql_query() [function.mssql-query]: message: 無法用 DB-Library 或 ODBC 3.7 或更早版本將 ntext 資料發送到客戶端。 (severity 16) Query failed
PHP 內建 mssql 擴展基於舊版 FreeTDS (DB-Library),不支援 Unicode 大物件型別:
ntext、nvarchar(max)、xml 等 Unicode LOB 型別text、varchar(max)ALTER TABLE your_table ALTER COLUMN your_column TEXT;
優點:零代碼修改,效能最佳。缺點:需評估現有 Unicode 資料是否會截斷/轉換異常。
SELECT CAST(ntext_column AS TEXT) AS content FROM your_table;
或使用 CONVERT:
SELECT CONVERT(TEXT, ntext_column) AS content FROM your_table;
適用於無法修改表結構的場景。
微軟官方驅動完整支援所有資料型別:
<?php
$conn = sqlsrv_connect($serverName, $connectionInfo);
$sql = "SELECT ntext_column FROM your_table";
$stmt = sqlsrv_query($conn, $sql);
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
// 直接讀取 ntext,無需轉換
echo $row['ntext_column'];
}
?>
遷移優勢:支援參數化查詢、交易、Always Encrypted、可用性群組等企業級特性。
mssql_* 函數為 sqlsrv_* 或 PDODateTime 物件 vs 字串)sqlsrv_errors() 陣列結構)