Nå, hvis nogen har en bedre løsning, så send den eller fortæl mig måske, hvad der kunne være galt med min midlertidige løsning. Jeg erstatter alle "?" med ":autoparam" med en parameterstigning, der skaber ":autoparam0", ":autoparam1", ":autoparam2" osv.
//Erstat ? med en pseudo navngivet parameter $newStatement =null; $parameter =0; while($newStatement !==$statement) { if($newStatement !==null) { $statement =$newStatement; } $newStatement =preg_replace('/\?/', ':autoparam'.$parameter, $statement, 1); $parameter++; } $statement =$newStatement;
Så, når jeg modtager en anmodning om at binde en parameter fra PDO, tjekker jeg, om parameteren er numerisk. På de fleste sprog, så vidt jeg ved, er numeriske indekser ugyldige identifikatorer, så jeg kan roligt antage, i det mindste for min PDO Userspace-driver, at jeg kan erstatte det numeriske parameternavn med:
//Erstat den første @oci8param til en pseudonavngivet parameter if(is_numeric($parameter)) { $parameter =':autoparam'.$parameter; }
Det virker indtil videre, jeg er nødt til at lave flere tests med laravel for at se, om problemet opstår i en anden score, men indtil videre ser det ud til at være i orden...