问题描述
在Laravel 7上使用sqldrv驱动程序嗨。 我有一个很大的查询,我使用了很多绑定,在查询中多次使用相同的倍数,例如ID和图章。
示例:
$query=... var = :id ... INSERT INTO ... foo = :i ... WHERE toni = :i ... "; $bindings =["id" => 123];
当我尝试运行查询DB::statement($query,$bindings);
时,出现此错误:Illuminate\Database\QueryException: sqlSTATE[07002]: [Microsoft][ODBC Driver 17 for sql Server]COUNT field incorrect or Syntax error (sql:
我了解到可以在config \ database.PHP 'options' => [ PDO::ATTR_EMULATE_PREPARES => true,]
中添加,但是它不起作用,可能是因为它是sqlsrv驱动程序。
我也可以在SQL查询的标头中声明和设置变量,但是我认为这是不必要的。
反正有重用绑定的方法
解决方法
我使用SQL变量解决了这个问题,我首先声明了它们,并在查询中的任何地方使用了它。所以我每个变量只使用一个绑定。
DECLARE @cBOstamp as varchar(25) = :bostamp
我在此看到的唯一问题是变量声明类型。您必须始终键入变量。