Pojedyncze cudzysłowy są używane w SQL dla literałów łańcuchowych. Oznacza to, że:
'$2'
to tylko ciąg znaków, który zawiera znaki $
i 2
zamiast symbolu zastępczego. Jeśli potrzebujesz symbolu zastępczego, musisz pominąć cudzysłowy:
$Query = pg_query_params($db, '...password=(crypt($2,password))...', array(33,'thepassword'));
Daje to symbol zastępczy, a nie literał ciągu.