• User

    Funzione Php

    Salve ragazzi volevo un chiarimento.

    public static function getEntityData($entityID) {
        $sql = "SELECT * FROM \"entity\" WHERE \"entityid\" = $entityID";
        $res = pg_query(DataManager::_getConnection(),$sql);
       if($res && pg_num_rows($res)) {
          return pg_fetch_assoc($res);
        }
          die("Failed getting entity $entityID");
        }
        return pg_fetch_assoc($res);
      }
    

    Nell'if, sia $res che pg_num_rows($res) sono entrambi true allora restituisce un array associativo pg_fetch_assoc($res).

    $res è una risorsa. Quindi se la risorsa punta a dei risultati restituisce true altrimenti false.

    Non mi è chiaro mentre pg_num_rows($res). Dovrebbe restituire il numero delle righe oppure -1 se non c'è nessun risultato. Infatti da php.net leggo:

    pg_num_rows: The number of rows in the result. On error, -1 is returned.

    Quindi da pg_num_rows dovrei avere 1,2,3 ecc numeri di righe oppure -1 in caso di nessun numero di righe. Ma questo significa che Php converte in true gli eventuali numeri di riga ed in false il -1?


  • ModSenior

    Ciao bismark2005,
    lo 0 viene considerato come FALSE, mentre gli altri numeri(Anche i negativi) sono considerati come TRUE.
    -1 nel tuo codice è il caso di errore, nel caso in cui le righe siano pari a 0, verrà restituito 0(Che è quindi considerato come FALSE).


  • User

    Grazie thedarkita sei gentilissimo. Da quanto ho capito però in caso di errore -1 sarà considerato true. Quindi è come se il codice non contemplasse il caso dell'errore


  • ModSenior

    In realtà non dovrebbero esserci casi in cui pg_num_rows($res) restituisca -1 e $res sia diverso da false. Per cui direi che vada bene cosi com'è.