2009-02-27 44 views
7

Tôi đang cố gắng chuyển một mảng giá trị từ php đến mysql được lưu trữ như là danh sách tham số và cách sử dụng mảng bên trong thủ tục được lưu trữ. Truy vấn trong thủ tục có ba câu lệnh IN trong đó vì vậy tôi muốn làm IN(@listOfids) trong đó @listOfids là 1,2,3,4 (mảng được mã hóa từ php).Vượt qua mảng vào một thủ tục lưu sẵn

+0

Bạn có thể đăng một phần mã của mình bằng cách chỉnh sửa câu trả lời để chúng tôi có thể hiểu rõ hơn về những gì bạn đang cố gắng đạt được và làm việc từ đó không? – lpfavreau

Trả lời

5

Vì vậy, tôi có một cách giải quyết mà là để nối các truy vấn và các thông số để mã giả là

mảng
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 đang nổ tung được thông qua tại qua php ví dụ ('1,2 , 3,4 '). Hy vọng điều này sẽ giúp ai đó

+0

@Akeem - nếu giải pháp ở trên phù hợp với bạn, hãy đánh dấu câu trả lời của bạn là câu trả lời có thể chấp nhận để câu hỏi của bạn sẽ không xuất hiện trong danh sách "chưa được trả lời" nữa. – Guss

+0

Tôi đã thử nhưng tôi nhận được một thông báo nói rằng tôi phải chờ 48 giờ trước khi chấp nhận câu trả lời của riêng tôi. – Akeem

+0

Cảm ơn, đó là những gì tôi cần trong một nhúm. Tôi nghĩ rằng có thể đổ danh sách id vào một bảng tạm thời nhưng tôi sẽ làm điều đó khi tôi có nhiều thời gian hơn. – MvcCmsJon

1

Tôi nghĩ rằng vấn đề chính ở đây là MySQL không hỗ trợ mảng dưới dạng kiểu dữ liệu. Bạn cần phải tạo mối quan hệ one-to-many với một bảng khác có chứa khóa ngoại trở lại dữ liệu chính của bạn và dữ liệu của mảng.

0

Tôi nghĩ bạn phải chuyển nó dưới dạng csv. Mysql không phải là rất thân thiện với looping và như vậy có lẽ tốt nhất của bạn làm nó bên ngoài anyways. Theo như ngôn ngữ thủ tục lưu trữ đi tôi tìm thấy Mysql thực sự là thiếu.

Các vấn đề liên quan