Originariamente inviato da bismark2005
Il problema non è il funzionamento dell'if. Non capivo come mai quei valori restituivano un valore booleano.

Poi scrivi che pg_num_rows restituisce 0.

Ma nel manuale linkato da satifal dice:

The number of rows in the result. On error, -1 is returned.
Scusa, ho dimenticato di scrivere "nel caso restituisse 0".
Detto ciò, lo script entra nell'if quando eseguendo la query non ottieni nessun dato (per colpa di un errore della query o della condizione che non viene verificata in nessuna riga della tabella).