【问题标题】:How to fix 'Incorrect syntax near '@P1'.' error in Laravel如何修复“@P1”附近的语法不正确。 Laravel 中的错误
【发布时间】:2019-09-11 07:40:14
【问题描述】:

尝试在 Laravel 中调用存储过程函数时,我不断收到此错误

SQLSTATE[42000]:[Microsoft][ODBC Driver 13 for SQL Server][SQL Server]“@P1”附近的语法不正确。 (SQL: exec TestProcedure(울산광역시, 남구, 신정동))

请注意,在 SSMS 中,当我传递变量(城市、县和地址)时,此存储过程可以正常工作。

这是我在 Laravel 中的代码;

public function filterKoreanAddress(Request $request)
{
    $data = $request->all();
    $results = DB::select(
        'exec TestProcedure(?, ?, ?)',
        [
            $request->input('city'),
            $request->input('county'),
            $request->input('address'),
        ]
    );
    dd($results);
}

那么,我在代码中做错了吗?

【问题讨论】:

  • 尝试去掉括号 -- EXEC testprocedure ?, ?, ?
  • 试过了,但现在我得到了这个:/ SQLSTATE[IMSSP]: Tried to bind parameter number 65536. SQL Server supports a maximum of 2100 parameters. (SQL: exec TestProcedure 울산광역시, 남구, 신정동)

标签: php sql-server laravel stored-procedures


【解决方案1】:

这样试试

$results = DB::select(
    'exec TestProcedure(?, ?, ?)',
    array(
        $request->input('city'),
        $request->input('county'),
        $request->input('address'),
    )
);

【讨论】:

  • 但是我做了一个小的修改是使用上面提到的@sticky bit 的代码,我删除了括号'。所以我得到的是这样的; public function filterKoreanAddress(Request $request) { $data = $request->all(); $results = DB::select( 'exec TestProcedure ?, ?, ?', array( $request->input('city'), $request->input('county'), $request->input('address'), ) ); dd($results); }
猜你喜欢
  • 1970-01-01
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多