Ciao,
tramite il PHP eseguo un ciclo FOR. Ad incremento eseguo una chiamata ad una Stored Procedure, passando dei parametri per eseguire una query. Praticamente gli passo un dato e la Stored Procedure controlla se il dato già esiste in una tabella, se non esiste lo inserisce altrimenti no.
Il problema è che se nei dati che passo, appena uno è già presente nella tabella, tutti quelli dopo non li inserisce anche se non sono presenti.
Da cosa può dipendere?
Il codice della Stored Procedure è il seguente:
Codice PHP:
BEGIN
/*Variabile nella quale verr? inserito il valore del dato da cercare*/
DECLARE dato_cerco TEXT;
/*Variabile nella quale verr? inserito il valore della tabella nella quale effettuare la ricerca*/
DECLARE tabella_cerco VARCHAR(50);
/*Variabile nella quale verr? inserito il valore del campo nel quale effettuare la ricerca*/
DECLARE campo_cerco VARCHAR(50);
DECLARE QRY TEXT;
DECLARE _ID VARCHAR(50);
DECLARE campo_controllo VARCHAR(50);
DECLARE valore_controllo VARCHAR(50);
/*Ricavo il valore passato come input*/
SET dato_cerco = dato;
SET tabella_cerco = tabella;
SET campo_cerco = campo;
SET valore_controllo = 'no';
SET campo_controllo = 'controllo';
/*Preparo ed eseguo la query*/
# SET @QRY = CONCAT('SELECT SQL_NO_CACHE id FROM ',tabella_cerco,' WHERE ',campo_cerco,' = ''',dato_cerco,''' INTO @_ID');
# PREPARE SSQLTEXT FROM @QRY;
# EXECUTE SSQLTEXT ;
# DEALLOCATE PREPARE SSQLTEXT;
SELECT id FROM controll_pagine WHERE pagina = dato_cerco INTO @_ID;
IF (@_ID IS NULL) THEN
SET @QRY = CONCAT('INSERT INTO ',tabella_cerco,' (',campo_cerco,',',campo_controllo,') VALUES (''',dato_cerco,''',''',valore_controllo,''')');
PREPARE SSQLTEXT FROM @QRY;
EXECUTE SSQLTEXT ;
DEALLOCATE PREPARE SSQLTEXT;
END IF;
END
Grazie!