recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment corriger cette erreur : "SQLSTATE : numéro de paramètre non valide"

J'ai essayé de nombreuses méthodes mais rien n'a corrigé cette erreur, que dois-je faire ?

Il y a un code

Contrôleur

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

Quand j'ajoute $ticketId, cela fonctionne et montre que l'identifiant est ce que je veux, mais lorsque je rejoins, cela ne fonctionne pas.

P粉364129744P粉364129744235 Il y a quelques jours344

répondre à tous(2)je répondrai

  • P粉289775043

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

    $ticketId renvoie une collection, si vous essayez d'obtenir tous les utilisateurs qui ont des billets, dans ce cas, vous pouvez faire quelque chose comme

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

    répondre
    0
  • P粉309989673

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

    SQLSTATE[HY093] : un numéro de paramètre invalide signifie généralement que vous avez fourni un nombre incorrect d'espaces réservés dans la requête et qu'il existe une inadéquation entre le nombre d'espaces réservés et le nombre de valeurs que vous essayez de lier à ces espaces réservés.

    Vous pouvez essayer :

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

    Un autre problème pourrait être que $ticketId est un tableau, vous avez donc besoin de :

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

    répondre
    0
  • Annulerrépondre