PDO में PHP में प्लेसहोल्डर्स का स्वचालित रूप से उद्धरणों में लपेटा जाना
तकनीकी रूप से, PDO सभी बाइंड किए गए मानों को उद्धरणों में लपेटता है, भले ही वे वास्तव में संख्याएँ हों, उन्हें स्ट्रिंग्स मानते हुए। यह SQL सिंटैक्स द्वारा अनुमत है। इसलिए, यदि आपके पास एक स्ट्रिंग मान है, तो प्लेसहोल्डर्स को उद्धरणों में लपेटने की आवश्यकता नहीं है।
आइए एक उदाहरण देखें। मान लीजिए एक वेरिएबल में एक स्ट्रिंग संग्रहीत है:
<?php
$name = 'name1';
?>
इस मामले में पोजिशनल प्लेसहोल्डर को स्ट्रिंग में लपेटने की आवश्यकता नहीं है:
<?php
$sql = 'SELECT * FROM users WHERE name=?';
$res = $pdo->prepare();
$res->execute([$name]);
?>
नामित प्लेसहोल्डर को भी स्ट्रिंग में लपेटने की आवश्यकता नहीं है:
<?php
$sql = 'SELECT * FROM users WHERE name=:name';
$res = $pdo->prepare();
$res->execute(['name' => $name]);
?>
क्वेरी में हमेशा स्ट्रिंग्स होना, फिर भी कभी-कभी SQL सिंटैक्स की समस्या पैदा कर सकता है - जहां सिंटैक्स के अनुसार संख्या अनिवार्य होती है। इस मामले में, आप पैरामीटर बाइंडिंग के वैकल्पिक तरीके का उपयोग कर सकते हैं, जिसे हम अगले पाठों में देखेंगे।