php 如何修复此错误:“SQL状态[HY093]:无效的参数号”

imzjd6km  于 2023-01-08  发布在  PHP
关注(0)|答案(3)|浏览(151)

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

    • 主计长**
$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();

当我dd $ticketId它的工作,并显示我想要的ID,但在加入它是不工作.

zpf6vheq

zpf6vheq1#

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

bttbmeg02#

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

ugmeyewa3#

试试这个...

$ticketsId = Tickets::select('id')->get()->toArray();

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

相关问题