查询可在SqlServer上运行,但不能在PHP上运行(超过4000个字符的文本字段)

时间:2018-07-10 12:37:11

标签: php sql-server pdo

我正在使用未记录的外部自制框架来处理现有的PHP代码。使用的数据库是Sql Server2008。

程序将获取一个Excel文件,对其进行解析,然后使用PDO将数据保存到数据库中。 我无权访问服务器配置,只有代码。我无法更改数据库配置(文本类型无法转换为VARCHAR类型)。

其中一个值正在停止执行,

  • 该错误仅发生在execute()命令上,
  • 我用相同的长度“ Lorem ipsum”替换了内容(假设 编码错误或其他错误),仍然无法正常运行
  • 我减少了内容长度,有效
  • 我签入数据库以获取数据类型,它是一个 TEXT 字段
  • 我一遍又一遍地玩,以确切地知道极限,这个极限是 4000个字符,

我试图在Sql Server(示例)上执行查询:

INSERT INTO [dbo].[database] (tableName, tableId, verifString, inErrorText, code, status) 
VALUES ('DIAG', 123455, 'diag', '[Long string more than 5000 characters]', 'ABC023','anoma')

有效

我在PHP(示例)中尝试​​了完全相同的查询[仅更改ID]:

$statement =$this->db->prepare("INSERT INTO [dbo].[database] (tableName, tableId, verifString, inErrorText, code, status) 
VALUES ('DIAG', 123456, 'diag', '[Long string greater than 4000 characters]', 'ABC023','anoma')");
$statement->execute();

再次,执行被停止

如果我在相同的查询中放入一个短字符串[仅更改ID](示例):

$statement =$this->db->prepare("INSERT INTO [dbo].[database] (tableName, tableId, verifString, inErrorText, code, status) 
VALUES ('DIAG', 123457, 'diag', '[Short string lower than 4000 characters]', 'ABC023','anoma')");
$statement->execute();

有效

我搜索了自制框架中是否有任何限制,但未找到任何内容。

有什么主意吗?

我希望我的英语是可以理解的。感谢您的关注。

0 个答案:

没有答案