首页  >  问答  >  正文

如何修复此错误:“SQLSTATE:无效的参数号”

我尝试了很多方法,但没有修复这个错误,我该怎么办?

有代码

控制器

$ticketId = Tickets::get('id');

$assig_user_name = DB::table('tickets')
        ->join('users', 'tickets.assigned_id', '=', 'users.id')
        ->select('users.id','users.name')
        ->where('tickets.id', '=', $ticketId)
        ->get();

当我添加 $ticketId 时,它可以工作并显示 id 是我想要的,但在加入时它不起作用。

P粉364129744P粉364129744173 天前263

全部回复(2)我来回复

  • P粉289775043

    P粉2897750432024-04-01 21:17:27

    $ticketId 返回集合,如果您试图获取所有拥有票证的用户,那么在这种情况下您可以执行类似的操作

    $ticketId = Tickets::select('id')->get();
    
    $assig_user_name = DB::table('tickets')
            ->join('users', 'tickets.assigned_id', '=', 'users.id')
            ->select('users.id','users.name')
            ->wherein('tickets.id',[$ticketId])
            ->get();

    回复
    0
  • P粉309989673

    P粉3099896732024-04-01 12:33:37

    SQLSTATE[HY093]:无效的参数编号通常表示您在查询中提供了错误数量的占位符,并且占位符的数量与您尝试绑定到这些占位符的值的数量之间存在不匹配.

    您可以尝试:

    $assig_user_name = DB::table('tickets')
            ->join('users', 'tickets.assigned_id', '=', 'users.id')
            ->select('users.id','users.name')
            ->where('tickets.id', '=', ':ticketId')
            ->setBindings([':ticketId' => $ticketId])
            ->get();

    另一个问题可能是 $ticketId 是一个数组,因此您需要:

    $assig_user_name = DB::table('tickets')
            ->join('users', 'tickets.assigned_id', '=', 'users.id')
            ->select('users.id','users.name', 'tickets.*')
            ->whereIn('tickets.id', $ticketId->pluck('id')->toArray())
            ->get();

    回复
    0
  • 取消回复