Ваш опубликованный пример не имеет смысла - pg_prepare()
и pg_query_params()
являются независимыми функциями с различными целями, которые вы обычно не используете совместно.
pg_prepare()
подготавливает оператор (запрос) для последующего выполнения через pg_execute()
. Это делается как потенциальная оптимизация - если вы заранее знаете, что вам нужно будет выполнять оператор много раз подряд, его предварительная подготовка может сэкономить некоторую работу на сервере базы данных, поскольку не нужно (повторно) подготавливать выписка за каждый звонок.
pg_query_params()
(а также его «более простая» версия pg_query()
) просто выполняет оператор (запрос) напрямую, заставляя сервер базы данных (заново) подготавливать оператор при каждом вызове функции.
Короче говоря, это
$result = pg_query_params($query, $params);
даст вам тот же результат, что и этот
$statement = pg_prepare($query);
$result = pg_execute($statement, $params);
Единственное отличие состоит в том, что во втором случае у вас все еще есть подготовленный оператор, готовый к повторному использованию для дополнительных вызовов pg_execute()
- поэтому вы можете дать ему имя, поскольку таким образом вы можете иметь различные подготовленные операторы на том же соединении, которое вы можете выполнить как угодно много раз в произвольном порядке.