ओह ठीक है, अगर किसी के पास बेहतर समाधान है, तो इसे सबमिट करें या शायद मुझे बताएं कि मेरे अस्थायी समाधान में क्या गलत हो सकता है। मैं सभी को प्रतिस्थापित करता हूं "?" पैरामीटर वृद्धि के साथ ":autoparam" के साथ ":autoparam0", ":autoparam1", ":autoparam2", आदि।
//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;
फिर, जब मुझे पीडीओ से पैरामीटर को बांधने का अनुरोध प्राप्त होता है, तो मैं जांचता हूं कि पैरामीटर संख्यात्मक है या नहीं। अधिकांश भाषाओं में, जहां तक मुझे पता है, संख्यात्मक अनुक्रमणिका अमान्य पहचानकर्ता हैं, इसलिए मैं सुरक्षित रूप से मान सकता हूं, कम से कम मेरे पीडीओ यूजरस्पेस ड्राइवर के लिए कि मैं संख्यात्मक पैरामीटर नाम को इसके साथ बदल सकता हूं:
//Replace the first @oci8param to a pseudo named parameter
if(is_numeric($parameter))
{
$parameter = ':autoparam'.$parameter;
}
यह अभी के लिए काम करता है, मुझे लार्वा के साथ और परीक्षण करने की ज़रूरत है यह देखने के लिए कि क्या समस्या एक अलग स्कोर में दिखाई देती है, लेकिन अभी तक, यह ठीक लगता है...