【问题标题】:How to turn off ANSI_WARNINGS using PDO in PHP如何在 PHP 中使用 PDO 关闭 ANSI_WARNINGS
【发布时间】:2014-05-19 15:19:59
【问题描述】:

我的问题

如何在 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 包装类

【问题讨论】:

    标签: php sql-server pdo truncate


    【解决方案1】:

    试试

    SET ANSI_WARNINGS OFF;
    

    没有= 符号

    其他信息

    如果你想关闭ARITHABORT(即在遇到被零除时引发错误)并且你的数据库的兼容级别为80或更低,只需设置ANSI_WARNINGS OFF@987654321 @。您还需要SET ARITHABORT OFF。 但是,请注意Microsoft warns about turning this off

    测试

    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
    

    【讨论】:

    • 当我的表单尝试插入对于该字段来说太大的数据时,我收到一个错误...
    • 我无法以该格式执行查询...如果有帮助,我收到的错误是:'字符串或二进制数据将被截断'
    • 所有排序,很难解释问题是什么,但基本上与我的包装类和那里的一个小错误有关。我会接受这个作为你在原始查询中指出我的“=”的答案:-)。感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2017-12-01
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 2019-12-24
    • 2016-09-13
    • 1970-01-01
    相关资源
    最近更新 更多