MySQLi

2011-04-06 13 views
8

मैं अपने MySQLi तैयार बयान में एक स्ट्रिंग पारित करने के लिए कोशिश कर रहा हूँ में संदर्भ द्वारा पैरामीटर पारित नहीं कर सकते हैं, लेकिन यह मुझे त्रुटि देता है:MySQLi

पैरामीटर संदर्भ द्वारा MySQLi

में यहाँ से पारित नहीं कर सकते

प्रासंगिक कोड है:

$kv = json_encode(array($key => $value)); 
$stmt->prepare("insert into rules (application_id, ruletype, rule_name, rule_info) values (?, ?, ?, ?);"); 
$stmt->bind_param('iiss', $application_id, 1, $config_name, $kv); 
+7

के रूप में पास नहीं किया गया है क्यों न केवल '1'' सीधे क्वेरी में एम्बेड करें? यदि यह एक स्थिर मूल्य है, तो इसे बाध्य पैरामीटर बनाने में कोई बात नहीं है। अन्यथा, बस '$ एक = 1;' करें और फिर बाइंड कॉल में '$ एक' में पास करें। आप निरंतर संदर्भ नहीं दे सकते। –

उत्तर

20

'आईस' और '1' संदर्भ के रूप में पारित नहीं किया जा सकता क्योंकि वे चर नहीं हैं लेकिन स्ट्रिंग स्थिरांक हैं। आपको उल्लिखित मानों के साथ दो चर बनाने और उन्हें पास करने की आवश्यकता है, क्योंकि bind_param() फ़ंक्शन संदर्भ द्वारा पारित चर की अपेक्षा करता है।

संपादित करें: यह '1' है जो समस्या का कारण बन रहा है, पैरामीटर का नाम बाध्य नहीं है ('iiss')। गलत जानकारी के लिए खेद है, जब मैं आपके प्रश्न का उत्तर दे रहा था तो मैं भीड़ में था।

+0

ध्यान दें कि पहली स्ट्रिंग पैरामीटर नहीं है, वे ** टाइप विनिर्देशन वर्ण ** हैं, http://php.net/manual/en/mysqli-stmt.bind-param.php – jeroen

+0

देखें हाँ, आप ठीक है, मेरा बुरा - मैंने प्रश्न को कम कर दिया और देखा कि ओपी चर के रूप में एक तर्क पारित नहीं कर रहा है। मैं आपके इनपुट के साथ जवाब संपादित करूंगा। –

0

$config_name तर्क की जांच करें। '1'

संबंधित मुद्दे