Я вижу две проблемы:
1. $connection->execute('SELECT test(w1,w2,w3)');
не использует переменные php. Это должно быть:
$connection->execute("SELECT test($w1,$w2,$w3)");
Обратите внимание, что вы должны использовать двойные кавычки, чтобы использовать переменную внутри строки.
2. Вы должны использовать функцию в правильная форма. Если функция получает (текст, дата, число), вы должны отправить ее соответственно:
$connection->execute("SELECT test('$w1','$w2',$w3)");
// or, for more accuracy
$connection->execute("SELECT test('$w1'::text,'$w2'::date,$w3)");
Когда вы делаете $connection->execute()
, вы выполняете оператор SQL, поэтому он должен быть хорошо написан. Приведенные выше примеры будут интерпретированы в POSTGRESQL как:
SELECT test('asbd'::text,'2020-02-05'::date,39021)
При условии, что переменные php имеют эти значения.