Aspas simples são usadas em SQL para literais de string. Isso significa que isso:
'$2'
é apenas uma string que contém os caracteres
$
e 2
em vez de um marcador de posição. Se você quiser um espaço reservado, você precisa deixar de fora as aspas:$Query = pg_query_params($db, '...password=(crypt($2,password))...', array(33,'thepassword'));
Isso fornece o espaço reservado em vez do literal de string.