मैं डेटाबेस का उपयोग करके क्वेरी करने का प्रयास कर रहा हूं CDbCriteria
में Yii 1
। मैं क्या कर रहा हूँ:
$criteria->addInCondition("t.id", $dealIdArr);
$criteria->order = "FIELD(t.id, $dealIdArr)";
और यह है $dealIdArr
और यह खाली नहीं है:
Array ( [0] => 3 [1] => 2 )
लेकिन जब स्क्रिप्ट चलती है, तो यह त्रुटि देता है:
CDbCommand SQL कथन निष्पादित करने में विफल: SQLSTATE [42S22]: कॉलम नहीं मिला: 1054 अज्ञात कॉलम "एरे" को "ऑर्डर क्लॉज" में।
मैं यह समझने में असमर्थ हूं कि इसमें गलत क्या है? कोई मदद?
उत्तर:
जवाब के लिए 2 № 1आप वर्तमान में दोनों स्थितियों में एक सरणी जोड़ रहे हैं। मैं Yii से बहुत ज्यादा परिचित नहीं हूं, लेकिन मुझे यकीन है कि यह आदेश के लिए एक स्ट्रिंग की उम्मीद करता है - और एक सरणी नहीं।
आप ऐसा कर सकते हैं implode()
इसे एक स्ट्रिंग में बदलने के लिए।
$dealIdStr = implode(", ", $dealIdArr);
$criteria->addInCondition("t.id", $dealIdArr); // You can use array here
$criteria->order = "FIELD(t.id, $dealIdStr)"; // This expects a string
जैसा कि आपके सरणी में वर्तमान में केवल पूर्णांक (3 और 2) शामिल हैं, आपको "यह उद्धृत करने की आवश्यकता नहीं है - लेकिन यदि किसी भी कारण से सरणी में तार हैं, तो आपको उन्हें MySQL में उद्धृत करने की आवश्यकता है
$dealIdStr = implode("", "", $dealIdArr);
$criteria->order = "FIELD(t.id, "$dealIdStr")";
जोड़ा एकल-उद्धरण नोटिस।
जब आप एक स्ट्रिंग के रूप में एक सरणी का उपयोग करने का प्रयास करते हैं, तो PHP बस "एरे" को प्रिंट करेगा, जो कि आप "अब देख रहे हैं।"