Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

mouzak's avatar

SQLSTATE[HY093]: Invalid parameter number: mixed named and positional parameters

please help me to correct this query

$data['som']=salaries::selectRaw('(salairebase + sursalaire) as total')->where('salaries.id', $request->id); $data['impot']=DB::table('baremes') -> where($data['som'],'=',('baremes.revenubrut')) ->select('baremes.trimf')->get();

0 likes
10 replies
JeffreyWay's avatar

Please format your code blocks properly and provide more information.

Snapey's avatar

Which of your two queries is causing the problem?

mouzak's avatar

this queries

$d= $data['som'];

$data['impot']=DB::table('baremes')->where('revenubrut','=',$d)->select('trimf')->get();

Snapey's avatar

What does $data['som'] contain ?

mouzak's avatar

@SNAPEY - it contain that : $data['som']=salaries::selectRaw('(salairebase + sursalaire) as total')->where('salaries.id', $request->id)->get();

Snapey's avatar
Snapey
Best Answer
Level 122

So it contains a collection (assuming that query is executed)?

and you are trying to use this array in a where statement

->where('revenubrut','=',$d)

That will be a problem.

If you want a single string value, try

data['som']=salaries::selectRaw('(salairebase + sursalaire) as total')
              ->where('salaries.id', $request->id)->first()->total();
1 like
mouzak's avatar

@SNAPEY - hi! i do that but have this error Call to undefined method Illuminate\Database\Query\Builder::total()

Snapey's avatar

sorry, remove last brackets after total

1 like
mouzak's avatar

@SNAPEY - can you help me fix the query?

    $d=salaries::selectRaw('(salairebase + sursalaire) as total ->where('salaries.id', $request->id)->first()->total;

  $im=salaries::selectRaw('(nombreparts) as  total')->where('salaries.id', $request->id)->first()->total;

    $data['impot']= DB::table('baremes')
       ->where(" ('revenubrut','=',$d){
           if($im='2.5') -> {select('deuxs')}
           or if($im =1') { ->select('un')}
           or if($im='1.5') { ->select('uns')}
            or if($im='2') { ->select('deux')}
           or if($im='3') { ->select('trois')}
           or  if($im='3.5') { ->select('troisplus')}


          }")->get();

Please or to participate in this conversation.