pg_insert

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

pg_insert Insere array na tabela

Descrição

pg_insert(
    PgSql\Connection $connection,
    string $table_name,
    array $values,
    int $flags = PGSQL_DML_EXEC
): PgSql\Result|string|bool

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.

Parâmetros

connection

Uma 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.

Valor Retornado

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.

Erros/Exceções

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.

Registro de Alterações

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.

Exemplos

Example #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";
  }
?>

Veja Também

  • pg_convert() - Converte valores de array associativo em formas adequadas para instruções SQL