sql >> Databáze >  >> RDS >> Oracle

Můžete použít pojmenované parametry v Laravel Eloquent

No dobře, pokud má někdo lepší řešení, pošlete ho nebo mi možná řekněte, co by mohlo být s mým dočasným řešením špatně. Nahradím všechny "?" s ":autoparam" s přírůstkem parametru vytvářejícím ":autoparam0", ":autoparam1", ":autoparam2" atd.

    //Replace ? with a pseudo named parameter
    $newStatement = null;
    $parameter = 0;
    while($newStatement !== $statement)
    {
        if($newStatement !== null)
        {
            $statement = $newStatement;
        }
        $newStatement = preg_replace('/\?/', ':autoparam'.$parameter, $statement, 1);
        $parameter++;
    }
    $statement = $newStatement;

Když pak obdržím požadavek na vazbu parametru od PDO, zkontroluji, zda je parametr číselný. Ve většině jazyků, pokud vím, jsou číselné indexy neplatné identifikátory, takže mohu s jistotou předpokládat, alespoň u mého ovladače uživatelského prostoru PDO, že mohu nahradit název číselného parametru:

    //Replace the first @oci8param to a pseudo named parameter
    if(is_numeric($parameter))
    {
        $parameter = ':autoparam'.$parameter;
    }

Zatím to funguje, musím udělat více testů s laravelem, abych zjistil, jestli se problém neobjeví v jiném skóre, ale zatím to vypadá v pořádku...




  1. Oracle Vložit přes Výběr z více tabulek, kde jedna tabulka nemusí mít řádek

  2. Heslo obchodu je v pořádku v proměnné php Session?

  3. Postgres nevrací lastval() správně

  4. jak použít FORMÁT DATA v mém dotazu?