Метод prepare()
может возвращать false, и вы должны проверить это. Что касается того, почему он возвращает false, возможно, имя таблицы или имена столбцов (в выражении SET или WHERE) не верны?
Попробуйте еще как: что-то вроде $conn->error_list
для проверки ошибок, возникших при разборе SQL. (Я буду время от времени выводить фактические строки операторов SQL и вставлять их в phpMyAdmin для проверки, но там определенно что-то не получается.)
SELECT setting FROM pg_settings WHERE name = 'data_directory'