यहां दो बड़ी समस्याएं हैं। पहला नाबालिग है। कोड की ये पंक्तियाँ कभी काम नहीं करेंगी:
$db->bindParam(1,`account`);
$db->bindParam(1,'$dbb'); //line 17
ऐसा इसलिए है क्योंकि वे दोनों bindParam
. को कॉल करने का प्रयास कर रहे हैं एक स्ट्रिंग . के रूप में . यह असंभव है। bindParam
एक चर के संदर्भ की जरूरत है। यही कारण है कि आपको "संदर्भ द्वारा पैरामीटर 2 पास नहीं कर सकता" त्रुटि मिलती है:आप केवल चर पास कर सकते हैं संदर्भ द्वारा।
हालांकि, इनमें से कोई भी काम करेगा:
$db->bindParam(1, $dbb); // call bindParam on a variable
$db->bindValue(1, 'account'); // call bindValue on a string literal
हालाँकि, अधिक मूलभूत समस्या तैयार कथनों की आपकी समझ है। तैयार बयानों का विचार नहीं है दूसरे स्ट्रिंग में स्ट्रिंग्स का सरल प्रतिस्थापन। यह मूल रूप से डेटा से क्वेरी की संरचना को अलग करने के बारे में है। तालिका का नाम क्वेरी की संरचना का हिस्सा माना जाता है, डेटा का हिस्सा नहीं। आपको तालिका का नाम मूल क्वेरी में रखना होगा। आपका पहला कोड इसे करने का तरीका है।
$db = $conn->prepare( 'CREATE SCHEMA IF NOT EXISTS account');