首頁  >  問答  >  主體

如何修復此錯誤:“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 天前264

全部回覆(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
  • 取消回覆