Nåväl, om någon har en bättre lösning, skicka in den eller berätta för mig vad som kan vara fel med min tillfälliga lösning. Jag ersätter alla "?" med ":autoparam" med en parameterökning som skapar ":autoparam0", ":autoparam1", ":autoparam2", etc.
//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;
Sedan, när jag får en begäran om att binda en parameter från PDO, kontrollerar jag om parametern är numerisk. I de flesta språk, så vitt jag vet, är numeriska index ogiltiga identifierare, så jag kan säkert anta, åtminstone för min PDO Userspace-drivrutin att jag kan ersätta det numeriska parameternamnet med:
//Replace the first @oci8param to a pseudo named parameter
if(is_numeric($parameter))
{
$parameter = ':autoparam'.$parameter;
}
Det fungerar för tillfället, jag måste göra fler tester med laravel för att se om problemet dyker upp i en annan poäng, men än så länge verkar det okej...