Pagina 1 di 1

Strano problema con query

Inviato: mer 3 ott 2012, 11:21
da darkstaring
Giorno a tutti :)
Ho un problema con una query..
Il problema è stano perchè prima di eseguire la query la faccio stampare a video e se la eseguo manualmente da mysql funziona mentre se la eseguo con php mi dà questo errore:

Codice: Seleziona tutto

Errore in queryagg
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '
' at line 1
Questo è il codice

Codice: Seleziona tutto

   print "Trovo i dipendenti che hanno fatto più aggiunstamenti e più errori";
   $query="select id-1 AS DIP_PREC,id AS DIP_AGG, dataora , id_dipendente  , id_trattamento from appuntamenti where  (id_trattamento ='A2') OR (id_trattamento='A3');";
   print $query."<BR><BR>";
   $query=mysql_query($query);
   if($query==FALSE) print "ERRORE";
   else
   {
      for($i=0;$i<mysql_num_rows($query);$i++)
      {
	$dip_pre=mysql_result($query,$i,'DIP_PREC');
	$dip_agg=mysql_result($query,$i,'DIP_AGG');
	if(isset($pre)) $pre= $pre.'OR (appuntamenti.id="'.$dip_pre.'")';
	else $pre='(appuntamenti.id="'.$dip_pre.'")';
	
	if(isset($agg)) $agg= $agg."OR (appuntamenti.id='".$dip_agg."')";
	else $agg="(appuntamenti.id='".$dip_agg."')";
      }
      $queryagg="select count(*)AS TOT,dipendenti.nome from appuntamenti, dipendenti where (id_dipendente=dipendenti.id) AND ( $agg ) group by dipendenti.nome;<BR>";
      $querypre="select count(*)AS TOT,dipendenti.nome from appuntamenti, dipendenti where (id_dipendente=dipendenti.id) AND ( $pre ) group by dipendenti.nome; <BR>";
      print "<br>AGGIUNSTA: \t $queryagg<br>SBAGLIANO: \t $querypre<br>";
      $queryagg=mysql_query($queryagg);
      $querypre=mysql_query($querypre);
      if($queryagg == FALSE) print "<br>Errore in queryagg<br>".mysql_error();
      else
      {
      print "Conteggio dei dipendenti che hanno riparato:<TABLE>";
      print "<TH>DIPENDENTE</TH><TH>TOTALE</TH>";
	for($i=0;$i<mysql_num_rows($queryagg);$i++)
	{
	  $conteggio=mysql_result($queryagg,$i,'TOT');
	  $nome=mysql_result($queryagg,$i,'nome');
	  print "<TR><TD>$nome</TD><TD>$conteggio</TD></TR>";
	}
	print "</TABLE>";
	}
	
     if($querypre == FALSE) print "<br>Errore in querypre<br>".mysql_error();
      else
      {
      print "Conteggio dei dipendenti che hanno sbagliato:<TABLE>";
      print "<TH>DIPENDENTE</TH><TH>TOTALE</TH>";
	for($i=0;$i<mysql_num_rows($querypre);$i++)
	{
	  $conteggio=mysql_result($querypre,$i,'TOT');
	  $nome=mysql_result($querypre,$i,'nome');
	  print "<TR><TD>$nome</TD><TD>$conteggio</TD></TR>";
	}
	print "</TABLE>";
	}
	}
Sono diverse le query, prima cerco quello dove devo cercare, e poi faccio un'altra query che conta su quello che ho trovato...

Questo è la query che mi stampa a video

Codice: Seleziona tutto

select count(*)AS TOT,dipendenti.nome from appuntamenti, dipendenti where (id_dipendente=dipendenti.id) AND ( (appuntamenti.id="200876")OR (appuntamenti.id="200877")OR (appuntamenti.id="201254")OR (appuntamenti.id="201255")OR (appuntamenti.id="201884")OR (appuntamenti.id="201888")OR (appuntamenti.id="201900")OR (appuntamenti.id="201905")OR (appuntamenti.id="202130")OR (appuntamenti.id="202342")OR (appuntamenti.id="202639")OR (appuntamenti.id="202980")OR (appuntamenti.id="203253")OR (appuntamenti.id="205453")OR (appuntamenti.id="205465")OR (appuntamenti.id="205877")OR (appuntamenti.id="206097")OR (appuntamenti.id="206338")OR (appuntamenti.id="207138")OR (appuntamenti.id="207678")OR (appuntamenti.id="207682")OR (appuntamenti.id="208651")OR (appuntamenti.id="208689")OR (appuntamenti.id="208690")OR (appuntamenti.id="208740")OR (appuntamenti.id="208997")OR (appuntamenti.id="208998")OR (appuntamenti.id="210075")OR (appuntamenti.id="200744") ) group by dipendenti.nome;
Se la eseguo da mysql funge....

Sapete dirmi perchè e/o come risolvere???

Grazie

Re: Strano problema con query

Inviato: mer 3 ott 2012, 12:33
da teox99

Codice: Seleziona tutto

   if(isset($pre)) $pre= $pre.'OR (appuntamenti.id="'.$dip_pre.'")';
   else $pre='(appuntamenti.id="'.$dip_pre.'")';
   
   if(isset($agg)) $agg= $agg."OR (appuntamenti.id='".$dip_agg."')";
   else $agg="(appuntamenti.id='".$dip_agg."')";
penso che sia un semplice problema di apici, essendo appuntamenti.id numerico
puoi sostituire così

Codice: Seleziona tutto

   if(isset($pre)) $pre = $pre." OR (appuntamenti.id=$dip_pre)";
   else $pre="(appuntamenti.id=$dip_pre)";
   
   if(isset($agg)) $agg = $agg." OR (appuntamenti.id=$dip_agg)";
   else $agg="(appuntamenti.id=$dip_agg)";

Re: Strano problema con query

Inviato: mer 3 ott 2012, 14:52
da darkstaring
Avevo già provato ma niente...
Mi ritorna sempre lo stesso errore nonostante se eseguo la query da mysql funzioni
Strano :(

Re: Strano problema con query

Inviato: mer 3 ott 2012, 15:08
da ZeroUno
mi sa che ti genera qualche a capo di troppo.

invece di print usa:

Codice: Seleziona tutto

echo "<pre>============\n";var_dump($query);echo "============</pre>";

edit:

Codice: Seleziona tutto

      $queryagg="select count(*)AS TOT,dipendenti.nome from appuntamenti, dipendenti where (id_dipendente=dipendenti.id) AND ( $agg ) group by dipendenti.nome;<BR>";
che ci fa quel br alla fine?

Re: Strano problema con query

Inviato: mer 3 ott 2012, 15:17
da darkstaring
Ho provato a togliere quei BR che non ci facevano nulla e tutto và bene :D
ahahahahah....

Grazieeeeeee :D

Ma a che serve:

Codice: Seleziona tutto

echo "<pre>============\n";var_dump($query);echo "============</pre>";
???

Re: Strano problema con query

Inviato: mer 3 ott 2012, 15:55
da ZeroUno
darkstaring ha scritto:Ma a che serve:

Codice: Seleziona tutto

echo "<pre>============\n";var_dump($query);echo "============</pre>";
???
prova ;)