5

So i have this query on my laravel model to be called in my controller

model:

public static function predikat($masa, $ipk_yudisium){

    $searchFilter = DB::select(DB::raw("SELECT 

m_predikat_yudisium.keterangan
FROM m_predikat_yudisium WHERE
m_predikat_yudisium.masa_awal_berlaku <= :masa and
m_predikat_yudisium.masa_akhir_berlaku >= :masa and
m_predikat_yudisium.range_awal_ipk <= :ipk_yudisium  and
m_predikat_yudisium.range_akhir_ipk >= :ipk_yudisium and
m_predikat_yudisium.group_id = 1"),
            array('masa' => $masa,
                'ipk_yudisium' => $ipk_yudisium
            )
        )
        ;
        foreach ($searchFilter as $predikat){
            return $predikat;
        }
        $predikat = (object) array('keterangan' => "" );
        return $predikat;
    }

controller :

$masa = $request->input('masa');
$ipk_yudisium= $request->input('ipk_yudisium');

$predikat = $data->predikat($masa, $ipk_yudisium); //$data is my model called name

but i cant execute that query, it got an error message saying :

SQLSTATE[HY093]: Invalid parameter number (SQL: SELECT m_predikat_yudisium.keterangan
FROM m_predikat_yudisium WHERE
m_predikat_yudisium.masa_awal_berlaku <= :masa and
m_predikat_yudisium.masa_akhir_berlaku >= :masa and
m_predikat_yudisium.range_awal_ipk <= :ipk_yudisium and
m_predikat_yudisium.range_akhir_ipk >= :ipk_yudisium and
m_predikat_yudisium.group_id = 1)

what is wrong? thanks

  • Possible duplicate of [SQLSTATE\[HY093\]: Invalid parameter number: parameter was not defined](https://stackoverflow.com/questions/10966251/sqlstatehy093-invalid-parameter-number-parameter-was-not-defined) – Nipun Aug 03 '17 at 09:13
  • 1
    Chances are you can't re-use placeholder labels. – Jonnix Aug 03 '17 at 09:13
  • use sprintf instead. $data = DB::select(DB::raw(sprintf("select * from %s", 'table_name'))); – ytdm Jan 19 '23 at 00:17

1 Answers1

8

You cannot use the same parameter name more than once, so try something like this

$searchFilter = DB::select(DB::raw("SELECT 
                        m_predikat_yudisium.keterangan
                        FROM m_predikat_yudisium 
                        WHERE
                        m_predikat_yudisium.masa_awal_berlaku <= :masa and
                        m_predikat_yudisium.masa_akhir_berlaku >= :masa1 and
                        m_predikat_yudisium.range_awal_ipk <= :ipk_yudisium  and
                        m_predikat_yudisium.range_akhir_ipk >= :ipk_yudisium1 and
                        m_predikat_yudisium.group_id = 1"),
    array('masa' => $masa,
          'masa1' => $masa,
          'ipk_yudisium' => $ipk_yudisium,
          'ipk_yudisium1' => $ipk_yudisium
    )
)
RiggsFolly
  • 93,638
  • 21
  • 103
  • 149