如何在PHP中使用PDO关闭ANSI_WARNINGS

时间:2014-05-19 15:19:59

标签: php sql-server pdo truncate

我的问题

如何在PHP中使用PDO关闭SQL Server中的ANSI_WARNINGS

我的理由

除非我的访问者使用支持HTML 5的现代浏览器,否则我无法将最大长度设置为textareas,这意味着当文本框中的数据太大时,我的查询会返回错误。结果,我需要关闭ANSI_WARNINGS以强制SQL Server截断任何太大而无法插入数据库字段的文本...

我尝试了什么......

我尝试过运行以下查询:

$this->mssql->sql("SET ANSI_WARNINGS = OFF");

然后立即执行插入查询:

$this->mssql->sql("INSERT INTO...");

忽略$this->mssql->sql部分,这只是调用我自己的PDO包装类

1 个答案:

答案 0 :(得分:1)

尝试

SET ANSI_WARNINGS OFF;

没有=标志

<强>更新

刚刚从MSDN文档中找到了这个。如果ARITHABORT为ON,则设置ANSI_WARNINGS ON / OFF不会生效。你也需要关闭ARITHABORT。见下文......

<强>测试

SET ARITHABORT OFF;
GO
SET ANSI_WARNINGS OFF;
GO

SELECT 1/0      --<-- Returns NULL instead of arithmetic overflow error.
GO

DECLARE @TABLE TABLE (VAL VARCHAR(2))
INSERT INTO @TABLE VALUES ('Long String')   --<-- inserts data and truncates extra bits

SELECT * FROM @TABLE

GO