(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
pg_insert — Insere array na tabela
$connection,$table_name,$values,$flags = PGSQL_DML_EXEC
pg_insert() insere os valores
de values na tabela especificada
por table_name.
Se flags for especificado,
pg_convert() será aplicado aos
values com as opções (flags) especificadas.
Por padrão, pg_insert() passa valores brutos.
Os valores devem ser escapados ou a opção PGSQL_DML_ESCAPE
deve ser especificado em flags.
PGSQL_DML_ESCAPE cita e escapa parâmetros/identificadores.
Portanto, os nomes de tabelas/colunas diferenciam maiúsculas de minúsculas.
Observe que nem o escape nem a consulta preparada podem proteger consultas LIKE, JSON, Array, Regex, etc. Esses parâmetros devem ser tratados de acordo com seus contextos. ou seja, escapar/validar valores.
connectionUma instância de PgSql\Connection.
table_name
Nome da tabela na qual inserir linhas. A tabela table_name deve ter pelo menos
tantas colunas quanto values tem elementos.
values
Um array cujas chaves são nomes de campos na tabela table_name,
e cujos valores são os valores dos campos que serão inseridos.
flags
Qualquer número de PGSQL_CONV_OPTS,
PGSQL_DML_NO_CONV,
PGSQL_DML_ESCAPE,
PGSQL_DML_EXEC,
PGSQL_DML_ASYNC ou
PGSQL_DML_STRING combinados. Se PGSQL_DML_STRING fizer parte dos
flags então a string de consulta será retornada. Quando PGSQL_DML_NO_CONV
ou PGSQL_DML_ESCAPE está definido, ele não chama pg_convert() internamente.
Retorna true em caso de sucesso ou false em caso de falha.. Ou retorna um string em caso de sucesso se PGSQL_DML_STRING for passado
via flags.
Um ValueError é lançado quando a tabela especificada é inválida.
Um ValueError ou TypeError é lançado quando o valor ou tipo de campo não corresponde corretamente ao tipo do PostgreSQL.
| Versão | Descrição |
|---|---|
| 8.3.0 |
Agora lança um erro ValueError quando a tabela especificada é inválida;
anteriormente um E_WARNING era emitido.
|
| 8.3.0 |
Agora lança um erro ValueError ou TypeError
quando o valor ou tipo de campo não corresponde corretamente ao tipo do PostgreSQL;
anteriormente um E_WARNING era emitido.
|
| 8.1.0 | Agora retorna uma instância de PgSql\Result; anteriormente, um resource era retornado. |
| 8.1.0 |
O parâmetro connection agora espera uma instância de PgSql\Connection;
anteriormente, um resource era esperado.
|
Exemplo #1 Exemplo de pg_insert()
<?php
$dbconn = pg_connect('dbname=foo');
// Isso é um tanto seguro, já que todos os valores têm escape.
// No entanto, o PostgreSQL suporta JSON/Array. Estes não são
// seguros nem por escape nem por consulta preparada.
$res = pg_insert($dbconn, 'post_log', $_POST, PGSQL_DML_ESCAPE);
if ($res) {
echo "Os dados POST foram registrados com sucesso\n";
} else {
echo "Usuário deve ter enviado entradas erradas\n";
}
?>