【发布时间】:2026-01-29 09:00:01
【问题描述】:
问题:针对 VARCHAR(256+) 字段的 MSSQL 查询在 PHP 中仅返回 255 个字符,无论 VARCHAR 大小是否大于 255。
我看到了对解决方法 here 和 here 的引用,其中解决方法基本上是将 VARCHAR 转换为 TEXT:
SELECT CAST(myField AS TEXT) AS myField FROM myTable
但是,如果我有一堆查询,例如:
SELECT * FROM myTable
我的意思是,当然,我可以查找所有类似的查询并执行以下操作:
SELECT CAST(myField AS TEXT) AS 'myField2', * FROM myTable
并将随后的 PHP 变量从 myField 更新为 myField2,但这对于我的应用程序来说是一项相当大的任务。更不用说我必须查找所有具有 VARCHAR(256+) 的表中的所有字段,然后在我的 PHP 应用程序中查找所有受影响的查询。
我们正在运行 PHP 5.2.17,我知道 MSSQL 不再受支持/开发。我已经看到 Microsoft 支持的 SQL Server 驱动程序here,但我必须将我的 PHP 版本更新到 5.3.6 或 5.4。我不完全确定如果我进行升级会带来什么。另外,我们必须在 PHP 应用程序中将所有 mssql_connect() 更改为 sqlsrv_connect() 和其他函数从 mssql 到 sqlsvr 的版本。
是否有人知道任何其他解决方法(例如我可以从可靠来源下载的较新的 DbLib C API),这样我就不必去修改我的 PHP 应用程序中的所有内容?
【问题讨论】:
-
我不知道 mssql,但这会起作用吗?
SELECT CAST(* AS TEXT) FROM myTable? PHP 不太关心数据类型,因此您不必在 PHP 中强制转换为整数或日期。然后,您唯一需要做的就是全局查找SELECT *并将其替换为SELECT CAST(* AS TEXT)。如果我提出的查询当然有效:) -
有趣的想法。我以前没见过 :) 不幸的是,效果不太好:sqlfiddle.com/#!3/ba562/2
标签: php sql sql-server