Sto provando a passare una matrice di valori da PHP a stored procedure mysql come elenco di parametri e come utilizzare la matrice all'interno della stored procedure. La query nella procedura ha tre istruzioni IN in là quindi mi piacerebbe fare IN(@listOfids)
dove @listOfids è 1,2,3,4 (una matrice implosa da php).Passa array in una procedura memorizzata
risposta
così ho ottenuto una soluzione che è quello di concatenare la query e parametri in modo che il codice di pseudo
arrayCREATE 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 sono implose che viene passato in via php per esempio ('1,2 , 3,4'). Spero che questo aiuti qualcuno
@Akeem: se la soluzione di cui sopra funziona per te, contrassegna la risposta come risposta accettabile in modo che la tua domanda non venga più visualizzata nell'elenco "senza risposta". – Guss
Ho provato ma ho ricevuto un messaggio che diceva che devo aspettare 48 ore prima di accettare la mia risposta. – Akeem
Grazie, questo è quello che mi serviva in un pizzico. Penso che sia possibile scaricare la lista ID in una tabella temporanea, ma lo farò quando avrò più tempo. – MvcCmsJon
Penso che il problema principale qui sia che MySQL non supporta gli array come tipo di dati. È necessario creare una relazione one-to-many con un'altra tabella che contenga una chiave esterna sui dati principali e i dati dell'array.
Penso che devi passarlo come un csv. Mysql non è molto amichevole con il looping e quindi probabilmente lo faresti meglio al di fuori comunque. Per quanto riguarda i linguaggi memorizzati, trovo che Mysql manchi davvero.
Potresti postare parte del tuo codice modificando la tua risposta in modo che possiamo capire meglio cosa stai cercando di ottenere e lavorare da lì? – lpfavreau