Heim  >  Fragen und Antworten  >  Hauptteil

So beheben Sie diesen Fehler: „SQLSTATE: ungültige Parameternummer“

Ich habe viele Methoden ausprobiert, aber nichts hat diesen Fehler behoben. Was soll ich tun?

Es gibt einen Code

Controller

$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();

Wenn ich $ticketId hinzufüge, funktioniert es und zeigt an, dass die ID das ist, was ich möchte, aber beim Beitreten funktioniert es nicht.

P粉364129744P粉364129744173 Tage vor262

Antworte allen(2)Ich werde antworten

  • 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();

    Antwort
    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();

    Antwort
    0
  • StornierenAntwort