Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PDO-计数字段不正确或语法错误_Php_Symfony_Pdo_Sqlsrv - Fatal编程技术网

Php PDO-计数字段不正确或语法错误

Php PDO-计数字段不正确或语法错误,php,symfony,pdo,sqlsrv,Php,Symfony,Pdo,Sqlsrv,我正在使用Symfony2(2.3)并尝试将会话数据写入数据库。 我将PDOSessionHandler与MSSQL 2012 db(sqlsrv作为驱动程序)一起使用 不幸的是,我总是得到一个PDO错误: 'SQLSTATE[07002]: [Microsoft][SQL Server Native Client 11.0]COUNT field incorrect or syntax error' PDOSessionHandler类准备的语句如下: MERGE INTO session

我正在使用Symfony2(2.3)并尝试将会话数据写入数据库。 我将PDOSessionHandler与MSSQL 2012 db(sqlsrv作为驱动程序)一起使用 不幸的是,我总是得到一个PDO错误:

'SQLSTATE[07002]: [Microsoft][SQL Server Native Client 11.0]COUNT field incorrect or syntax error'
PDOSessionHandler类准备的语句如下:

MERGE INTO session WITH (HOLDLOCK) USING (SELECT 1 AS dummy) AS src ON (session_id = :id) WHEN NOT MATCHED THEN INSERT (session_id, session_value, session_time) VALUES (:id, :data, :time) WHEN MATCHED THEN UPDATE SET session_value = :data, session_time = :time;
在我看来,这似乎是不正确的,因为相同的参数被多次使用。这是根据pdo手册不允许的:()

您必须为希望输入的每个值包含一个唯一的参数标记 调用PDOStatement::execute()时传入语句。你 在中不能多次使用同名的命名参数标记 准备好的语句,除非启用了仿真模式

这是symfony2错误还是我做错了什么


谢谢你的帮助

有两种解决方法:

  • 您可以将它们分别命名为
    :id2
    :data2
    :time2
  • 您可以启用
    ATTR\u EMULATE\u PREPARES

    $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);