Bir saklı yordam dizi iletin

3 Cevap php

Ben parametre listesi ve nasıl saklı yordam içindeki dizi kullanmak gibi saklanan prosedürleri mysql php gelen değerler dizisini geçmesine çalışıyorum. Prosedürde sorgu yüzden IN(@listOfids) @ listOfids 1,2,3,4 olduğu (php bir Imploded dizi) yapmak istiyorum orada ifadelerine IN üç vardır.

3 Cevap

Yani böylece sözde kodu sorgusunu ve parametreleri bağlamak için bir çözüm var

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 örneğin ('1, 2,3,4 ') üzerinden geçirilen diziler imploded edilir. Bu birileri yardımcı olur umarım

Burada asıl sorun MySQL veri türü olarak dizileri desteklemiyor olduğunu düşünüyorum. Geri ana veri ve dizinin verilerine yabancı anahtarını içeren başka bir tabloya bir one-to-many ilişkiyi oluşturmak gerekir.

Ben bir csv olarak geçmek zorunda düşünüyorum. Senin muhtemelen iyi zaten dışarıda yapıyor böylece mysql çok loop ile samimi ve böyle değildir. Bildiğim kadarıyla saklı yordam languages ​​gitmek gibi ben MySQL gerçekten eksik bulmak.