query con risultati replicati

ciao a tutti,

ho una query un pò complessa il cui numero di risultati se >= 1 vengono inseriti nella tabella risultati altrimenti no.

Ecco il codice dell'inserimento nella tabella risultati

elseif ($num2>=1)
{
   while ($data2 = mysql_fetch_array($result2)) {
       $id = $data2['id'];

        $sql="INSERT INTO `tabella_risultati` SET id_imm=$id";

         if (@mysql_query($sql)) {
            echo 'seconda fase: RISULATATO INSERITO CON SUCCESSO.<br>';

         } else {

            echo 'ERRORE seconda fase: '. mysql_error() . '<br>';
        }   
     }
}

L'inserimento funziona MA inserisce i risultati in maniera replicata

Ecco come si presenta la TABELLA RISULTATI dopo un inserimento di 2 risultati:

id |  id_imm

-----------

1  |  22

2  |  36

3  |  22

4  |  36

come posso risolvere il problema???

 :o

inviato 9 anni fa
stellina
modificato 9 anni fa
Gianni Tomasicchio
X 0 X

ma tra i record ottenuti dalla mysql_fetch_array ci sono già dei doppioni oppure il problema si verifica solo in inserimento?

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

mi risulta che il problema sia in fase di inserimento...

che significa?

risposto 9 anni fa
stellina
X 0 X

mi sembra strano visto che ogni INSERT viene eseguita a seguito di una estrazione di riga dalla precedente SELECT

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

è per quello che non capisco dove sta il problema.

risposto 9 anni fa
stellina
X 0 X

prova prima a farti stampare a video tutti i risultati ottenuti dalla select così controlli se i doppioni sono già lì

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Ma sei sicura che $num2 è = a 2 nell'esempio che hai riportato?

Sembrerebbe un errore di logica a monte dell'inserimento.

risposto 9 anni fa
LonelyWolf
X 0 X

$num2>=1

la variabile $num2 contiene il numero di risultati della query che viene fatta prima.

Se il numero è positivo vuol dire che ci sono risultati e posso procedere con la query di inserimento.

Non mi sembra un ragionamento sbagliato.

 :(

risposto 9 anni fa
stellina
X 0 X

Non è il ragionamento, nell'esempio che hai postato prima tu dici che ha inserito quattro valori invece che 2, la mia domanda è sei sicura che num2 fosse 2 (e quindi ha inserito 2 volte) anzichè 4 (e quindi ha inserito correttamente)?

risposto 9 anni fa
LonelyWolf
X 0 X

il numero di rislutati è esatto.

Ho provato a fare una stampa di num2 e mi da correttamente 2.

 ???

risposto 9 anni fa
stellina
X 0 X

Prova a fare prima la fetch dei risultati della SELECT, conservando i dati in un array, poi fai una foreach su tale array e lancia le INSERT corrispondenti.

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

non so bene come si faccia cmq provando cosi

elseif ($num2>=1)

{

   $arr = array(mysql_fetch_array($result2));

   foreach ($arr as $value)

   {

      echo "$value";

   }

   

}

non mi mostra i risultati.... ??? 

risposto 9 anni fa
stellina
X 0 X
$dati = array();
while ($tmp = mysql_fetch_array($result2)) {
   $dati[] = $tmp;
}
foreach ($dati as $value)
{
   echo $value['id'];
}

se funziona al posto dell'echo puoi mettere la INSERT

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda