टिप्पणियों में जो छल कहा गया है वह सही है। यहाँ एक तरीका है जो मैंने इसे पहले किया है।
मूल रूप से आप IN
. बनाते हैं सरणी मानों को लूप करके और एक बाइंडेड नाम में जोड़कर sql स्ट्रिंग का हिस्सा।
$allow = array( 'red', 'blue' );
$sql = sprintf(
"Select * from colors where type in ( %s )",
implode(
',',
array_map(
function($v) {
static $x=0;
return ':allow_'.$x++;
},
$allow
)
)
);
इसका परिणाम Select * from colors where type in ( :allow_0,:allow_1 )
फिर बस $allow
. को लूप करें सरणी और प्रत्येक चर को बांधने के लिए बाइंडवैल्यू का उपयोग करें।
foreach( $allow as $k => $v ){
$stmnt->bindValue( 'allow_'.$k, $v );
}
मैंने एक समान उदाहरण देने वाले प्रश्न से जुड़े धोखे को समझने से पहले इसे जोड़ा। मैं इसे यहाँ छोड़ देता हूँ क्योंकि यह दिखाता है कि इसे नामांकित बाइंडेड वेरिएबल्स के साथ कैसे करना है, न कि ?s