2009-02-27 12 views
7

मैं php से mysql संग्रहीत प्रक्रियाओं के पैरामीटर सूची के रूप में मानों की एक सरणी पास करने की कोशिश कर रहा हूं और संग्रहित प्रक्रिया के अंदर सरणी का उपयोग कैसे करें। प्रक्रिया में पूछताछ में तीन आईएन विवरण हैं इसलिए मैं IN(@listOfids) करना चाहता हूं जहां @listOfids 1,2,3,4 (php से एक imploded सरणी) है।एक सरलीकृत प्रक्रिया में पास सरणी

+0

मदद कर सकता है क्या आप अपना उत्तर संपादित करके अपने कोड का हिस्सा पोस्ट कर सकते हैं ताकि हम बेहतर ढंग से समझ सकें कि आप क्या हासिल करने और वहां से काम करने की कोशिश कर रहे हैं? – lpfavreau

उत्तर

5

तो मैं एक समाधान क्वेरी और मानकों को श्रेणीबद्ध करने के लिए तो छद्म कोड

CREATE PROCEDURE `related_stories`(IN param1 VARCHAR(255), IN param2 VARCHAR(255), IN param3 VARCHAR(255), IN publishDate INT(11), IN tlimit INT(11)) 
BEGIN 

SET @query =CONCAT(' 

select s.* from 
(

select * from 
(
SELECT something where condition IN (',param1,') 
) as table1 

UNION ALL 

select * from 
(
SELECT something where condition IN (',param2,') 
) as table2 

UNION ALL 

select * from 
(
SELECT something where condition IN (',param3,') 
) as table3 

) as s 

WHERE (s.publish_date < ',publishDate,') 
GROUP BY id limit ',tlimit,';'); 

PREPARE stmtInsert FROM @query; 
EXECUTE stmtInsert; 

END 

param1, param2, param3 बिखर गया रहे हैं सरणियों कि php जैसे माध्यम में पारित हो जाता है जो ('1,2 मिला , 3,4 ')। उम्मीद है कि यह किसी को

+0

@Akeem - यदि उपर्युक्त समाधान आपके लिए काम करता है, तो अपने उत्तर को स्वीकार्य उत्तर के रूप में चिह्नित करें ताकि आपका प्रश्न अब "अनुत्तरित" सूची में दिखाई न दे। – Guss

+0

मैंने कोशिश की लेकिन मुझे एक संदेश मिला कि मुझे अपना जवाब स्वीकार करने से 48 घंटे पहले इंतजार करना है। – Akeem

+0

धन्यवाद, जो मुझे चुटकी में चाहिए था। मुझे लगता है कि आईडी सूची को एक अस्थायी तालिका में डंप करना संभव है, लेकिन जब मैं अधिक समय लेता हूं तो मैं ऐसा करूँगा। – MvcCmsJon

1

मुझे लगता है कि यहां मुख्य समस्या यह है कि MySQL डेटा प्रकार के रूप में सरणी का समर्थन नहीं करता है। आपको one-to-many किसी अन्य तालिका से संबंध बनाने की आवश्यकता है जिसमें आपके मुख्य डेटा और सरणी के डेटा पर एक विदेशी कुंजी शामिल हो।

0

मुझे लगता है कि आपको इसे एक सीएसवी के रूप में पास करना होगा। MySQL लूपिंग के साथ बहुत अनुकूल नहीं है और ऐसा इसलिए संभव है कि आप इसे किसी भी तरह से बाहर कर रहे हों। जहां तक ​​संग्रहीत प्रक्रिया भाषाएं जाती हैं, मुझे लगता है कि माइस्क्ल में वास्तव में कमी है।

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