Les guillemets simples sont utilisés dans SQL pour les littéraux de chaîne. Cela signifie que ceci :
'$2'
est juste une chaîne qui contient les caractères $
et 2
plutôt qu'un espace réservé. Si vous voulez un espace réservé, vous devez omettre les guillemets :
$Query = pg_query_params($db, '...password=(crypt($2,password))...', array(33,'thepassword'));
Cela vous donne l'espace réservé plutôt que le littéral de chaîne.