Sql server 2008 ZF 2 MS SQL Server更新时出错1934

Sql server 2008 ZF 2 MS SQL Server更新时出错1934,sql-server-2008,zend-framework2,Sql Server 2008,Zend Framework2,尝试更新表中的行时出错 $adapter = new Zend\Db\Adapter\Adapter([ 'driver' => 'Pdo_dblib', 'hostname' => 'SRVSQL', 'database' => 'TDEV', 'username' => 'sa', 'password' => 'xxxx' ]); $update = $sql->update('F_ARTFOURNISS')

尝试更新表中的行时出错

$adapter = new Zend\Db\Adapter\Adapter([
    'driver'   => 'Pdo_dblib',
    'hostname' => 'SRVSQL',
    'database' => 'TDEV',
    'username' => 'sa',
    'password' => 'xxxx'
]);

$update = $sql->update('F_ARTFOURNISS')
    ->set([
        'AF_RefFourniss' => $fournRef,
        'AF_PrixAch'     => $fournPxAchat,
        'AF_Remise'      => $fournRemise,
        'AF_CodeBarre'   => $fournGenCode
    ])
    ->where(['AR_Ref' => $ref]);

try {
    $statement = $sql->prepareStatementForSqlObject($update);
    $results = $statement->execute();
} catch (Exception $e) {
    echo $e->getMessage() . "\n";
}
当我尝试执行上述代码时,我得到以下错误代码:

Statement could not be executed (HY000 - 1934 - General SQL Server error: Check messages from the SQL Server [1934] (severity 16) [(null)] - -1 - 16)
我还尝试在执行查询之前添加一些参数:

$adapter->query("SET ANSI_WARNINGS ON");
$adapter->query("SET ANSI_PADDING ON");
$adapter->query("SET ANSI_NULLS ON");
$adapter->query("SET QUOTED_IDENTIFIER ON");
$adapter->query("SET CONCAT_NULL_YIELDS_NULL ON");
这是下面生成的查询字符串的示例:

更新[F_ARTICLE]集合[AR_Design]=“Azertyouio”,“FA_Codefamile]=“J”,“AR_PrixAch]=“153.47”,“AR_PrixVen]=“145.7965”,“AR_Coef]=“0.95”,“AR_PoidsNet]=“0”,“AR_UnitePoids]=“2”,其中[AR_Ref]=“801-0198”

当我将这一行粘贴到SQLServerManagementStudio中时,它工作正常。它在我的项目中不起作用


感谢您的帮助

经过几次研究,我在这里找到了解决方案:

因此,我将代码更新为:

    $conn->executeQuery("
SET
  ANSI_NULLS,
  QUOTED_IDENTIFIER,
  CONCAT_NULL_YIELDS_NULL,
  ANSI_WARNINGS,
  ANSI_PADDING
ON;
");