[Yii 1][Risolto] Problema con ciclo for per inserimento dati nel database

Salve a tutti,

innanzitutto metto le mani avanti e mi scuso se scriverò qualche cavolata in questo post ;D

Problemone con una query (colpa mia e della mia cultura mysql).

Ho una query (la seconda sotto) prima di un ciclo for per inserire dati nel database.




$missive = SessioniUtente::model()->findAllByAttributes(array('sessione'=>array(Yii::app()->session->sessionID . Yii::app()->user->id)));

foreach($missive as $dati_missiva);




Query che mi sta facendo dannare!!!!


$recupero_tracking = Yii::app()->db->createCommand()

             ->select('tracking')

             ->from('missiva')

             ->where('sessione=:sessione', array(':sessione'=>Yii::app()->session->sessionID . Yii::app()->user->id))

	     ->andWhere('massiva_step2=:massiva_step2', array(':massiva_step2'=>2))

             ->queryColumn();



Sotto inizio il ciclo per inserire dati nella tabella (quantita proviene da un input di inserimento del form e in base alla quantita inserita si ripeteranno i cicli di inserimento).




for ($i = 1; $i <= $quantita; $i++) {	

					$compensi = new Compensi();			

		                        $compensi->user_id = Yii::app()->user->id;

		                        $compensi->user_nome = Yii::app()->user->nome;


		                        $compensi->tracking = ------->problema nel recupero dati dalla query.

		                       

                                        $compensi->peso = $dati_missiva->peso;

					$compensi->prodotto = $dati_missiva->podotto;

		                        $compensi->imponibile = $dati_missiva->imponibile;

		                        $compensi->iva = $aliquota_iva;

		                        $compensi->totale = number_format($compensi->imponibile *$aliquota_iva/100+$compensi->imponibile,2,'.','');

		                        $compensi->date=$dati_missiva->date;

					$compensi->time=$dati_missiva->time;


................ etc etc fino alla compilazione di tutti i campi e poi chiudo il ciclo 

}



Il problema è questo.

Voglio estrarre i codici tracking con la seconda query e ci riesco, ma non riesco a separarli.

Ho provato con implode, con explode, etc ma niente da fare. Mi restituisce sempre tutti i valori in un unica stringa.

Estratti i valori vorrei prenderne uno per ciclo e inserirli nella tabella compensi nel campo




compensi->tracking



Ci sto sbattendo la testa da 6 giorni ma niente da fare. Mi continua a inserire nel campo tracking il primo tracking che trova per tutti i cicli. Non riesco a fargli capire che a ogni ciclo deve prendere un tracking dalla query.

Credo bisogni ottenere una query tipo:




tracking[0] = '1';

tracking[1] = '2';

tracking[2] = '3';

e cosi via



Poi bisognerebbe fargli capire che a ogni ciclo deve prelevare un tracking e inserirlo.

Qualcuno può aiutarmi perfavore :( …grazie in anticipo

Allora: querycolumn, stando alla guida si comporta cosi:

Per cui è un array.

ti aspetti un unico valore dal SQL? Se si, allora usa queryScalar, ti ritornerà un unico valore, non un array

Ciao Realtebo e grazie della risposta.

Con quella query inserendo queryScalar() mi rida il primo risultato che trova.

Ci sto dando di matto.

Vorrei mi restituisse un array diviso in "stringhe" dove a ogni riga trova un tracking.

Servono tutti i record di quella colonna (tracking) e poi a ogni ciclo (sotto nel ciclo for) deve inserire un tracking.

Questo è ciò che mi serve. Ho provato con Row, con Column, con Scalar etc etc ma niente da fare…mi continua a inserire solo il primo record che trova.

Come diamine posso risolvere?

Credo di aver risolto…inserendo il foreach dentro al ciclio for…Faccio delle prove e se vanno bene riferirò

Ok allora , avevo fatto un errore nella chiusura del ciclo for…e ho risolto tutto con una banale query findAllByAttributes…leggendo l’ array dei dati dentro al ciclo for e inserendo a ogni ciclo un valore “tracking”.