Einfache Anführungszeichen werden in SQL für Zeichenfolgenliterale verwendet. Das bedeutet, dass dies:
'$2'
ist nur ein String, der die Zeichen $
enthält und 2
eher als Platzhalter. Wenn Sie einen Platzhalter wünschen, müssen Sie die Anführungszeichen weglassen:
$Query = pg_query_params($db, '...password=(crypt($2,password))...', array(33,'thepassword'));
Das gibt Ihnen den Platzhalter anstelle des String-Literals.