Log di un errore non grave!

Ciao Gianni

guarda qui :

<?php

   function isFavourite($id,$userid)

   {

      $query = "SELECT COUNT(*) AS `count` FROM `sm_faves` WHERE `usid`=" . (int) $userid . " AND `anid`="  . (int) $id;

      $exec  = $this->db->query($query);

      if($exec){

          @ $return= $this->db->getResult($exec,'count');         

         if($return == 0 || !$return){

            return 0;

         }else{

            return 1;

         }

      }else{

         return 0;

      }

   //}}}

   }

?>

non c'è nessun errore ;D il fatto è che se quell'annuncio non è nei preferiti ( quindi non conta nulla ) count non esiste e la funzione che effettua le query logga qualsiasi errore,come posso fare ad inibire il ritorno di 1 o 0 se mysql trova qualcos ( anche a mysql stesso se è possibile :D ) in modo che la query ritorno 1 con id trovato e 0 se non trova nulla, almeno evito di avere 500kb di log ogni due secondi :D

:bye:

inviato 9 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

non ho capito qual'è l'istruzione che scatena la registrazione di un messaggio di errore nei log

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X
<?php
   function query($query)
   {
      $exc = mysql_query($query);
      if(!$exc){
         $error = mysql_errno();
         switch($error){
            case 1146:
               $this->error->logError("Unable to send query : table not found", 'database');
               return false;
               break;
            default:
               $this->error->logError("Unable to send query : undefined error  : " . mysql_error(), 1);
               return false;
               break;
         }
      }else{   
         $this->counter++;
         return $exc;
      }
   }
//
   function logError($message, $mode = 0)
   {
      switch($mode){
         case 0:
         case 'engine':
         default:
            $fileNm = $this->logDir . $this->engineErrorLog . '.' . $this->logExt;
            break;
         case 1:
         case 'db':
         case 'database':
            $fileNm = $this->logDir . $this->dbErrorLog . '.' . $this->logExt;
            break;
         case 2:
         case 'hack':
            $fileNm = $this->logDir . $this->hackErrorLog . '.' . $this->logExt;
            break;
      }
      
      $text   = date('d.m.Y H:i:s') . '-' . $message . "\n";
      $handle = @fopen($fileNm, 'ab+');
      $write   = @fwrite($handle, $text);
      $close   = @fclose($handle);
         if( ! $write)
            $this->throwError("Unable to update log file");
   }
?>
risposto 9 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Dal codice che hai riportato mi sembra che i messaggi di log vengono generati se la query non ha successo (ovvero se è sbagliata). Confermi?

$exc = mysql_query($query);
if(!$exc){
        ...
risposto 9 anni fa
Gianni Tomasicchio
X 0 X

ja!

risposto 9 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Ma allora nella query c'è un errore!

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

ehm in pratica funziona così :

la funzione deve cercare se nel database esiste un record che ha come id quello dell'utente e dell'annuncio, se è vero ritorna 1 se non lo trova ritorna 0.

quindi che la query non restituisca nulla è normale, e dovrei evitare di fare il log in quel caso.

ma non riesco a trovare uno stratagemma per impedirlo!

risposto 9 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

non è quello il problema...

$exc = mysql_query($query);

if(!$exc){

$exc è diverso da false anche se la query non trova nulla. Diventa false se la query è sbagliata!

http://it.php.net/manual/en/function.mysql-query.php

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

ah d'oh!

qualcosa mi dice che dovrei usare mysql_num_rows() ^^'

risposto 9 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

ah d'oh!

qualcosa mi dice che dovrei usare mysql_num_rows() ^^'

ma non puoi usarlo con il SELECT COUNT perché, indipendentemente dal valore di COUNT ti restituirebbe sempre 1

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

si Gianni ho risolto :D

lol

risposto 9 anni fa
Andrea Turso
Andrea Turso
86
modificato 9 anni fa
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda