Ach, als iemand een betere oplossing heeft, stuur die dan in of vertel me misschien wat er mis kan zijn met mijn tijdelijke oplossing. Ik vervang alle "?" met ":autoparam" met een parameterverhoging die ":autoparam0", ":autoparam1", ":autoparam2", enz. creëert.
//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;
Als ik vervolgens een verzoek ontvang om een parameter van PDO te binden, controleer ik of de parameter numeriek is. In de meeste talen zijn, voor zover ik weet, numerieke indexen ongeldige identifiers, dus ik kan veilig aannemen, tenminste voor mijn PDO Userspace-stuurprogramma dat ik de numerieke parameternaam kan vervangen door:
//Replace the first @oci8param to a pseudo named parameter
if(is_numeric($parameter))
{
$parameter = ':autoparam'.$parameter;
}
Het werkt voor nu, ik moet meer tests doen met laravel om te zien of het probleem in een andere score verschijnt, maar tot nu toe lijkt het goed...