Laravel查询绑定重用

问题描述

在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

我在此看到的唯一问题是变量声明类型。您必须始终键入变量。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...