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...