Skip to main content

Função db_query_param

Função db_query_params($sql, $params = [], $conn = null)

Descrição

Executa uma query SQL utilizando parâmetros posicionais (placeholders $1, $2, ...) para evitar SQL Injection, tornando o código mais seguro e fácil de manter.
Recebe:

  • $sql: string da query com placeholders.

  • $params: array com os valores dos placeholders.

  • $conn: conexão com o banco (opcional).

Exemplos de Uso — Vários Tipos de Parâmetros

1. String

$nome = "Fulano da Silva";
$sql = "SELECT * FROM db_usuarios WHERE nome = $1";
$rs = db_query_params($sql, [$nome]);

2. Inteiro

$z01_numcgm = 42;
$sql = "SELECT * FROM cgm WHERE z01_numcgm = $1";
$rs = db_query_params($sql, [$z01_numcgm]);

3. Float

$k00_valor = 100.50;
$sql = "SELECT * FROM arrecad WHERE k00_valor >= $1";
$rs = db_query_params($sql, [$k00_valor]);

 

4. Boolean

$ativo = true; // ou pode ser 1 (verdadeiro) e 0 (falso)
$sql = "SELECT * FROM db_itensmenu WHERE libcliente = $1";
$rs = db_query_params($sql, [$ativo]);

 

5. Data

$data_inicio = '2025-07-01';
$data_fim = '2025-07-31';
$sql = "SELECT * FROM eventos WHERE data_evento BETWEEN $1 AND $2";
$rs = db_query_params($sql, [$data_inicio, $data_fim]);

 

Exemplo de consulta com parâmetros fixos

// Parâmetros
$numcgm      = 1001; // inteiro
$nome        = "Maria Eduarda"; // string
$cadastro    = '2025-07-22'; // data
$trabalha    = true; // boolean
$renda       = 4560.75; // float

// SQL com placeholders
$sql = "
  SELECT * FROM cgm
  WHERE z01_numcgm = $1
    AND z01_nome = $2
    AND z01_cadast = $3
    AND z01_trabalha = $4
    AND z01_renda >= $5
";

// Execução
$params = [$numcgm, $nome, $cadastro, $trabalha, $renda];
$rs = db_query_params($sql, $params);

Exemplo Dinâmico

// Parâmetros Dinamicos

$numcgm   = null;
$nome     = "Carlos%";
$cadastro = null;
$trabalha = true;
$renda    = 1000.00;

$where = [];
$params = [];

if (isset($numcgm) && $numcgm !== '' && $numcgm !== null) {
    $where[] = "z01_numcgm = $".(count($params)+1);
    $params[] = $numcgm;
}

if (isset($nome) && $nome !== '' && $nome !== null) {
    $where[] = "z01_nome ILIKE $".(count($params)+1);
    $params[] = $nome;
}

if (isset($cadastro) && $cadastro !== '' && $cadastro !== null) {
    $where[] = "z01_cadast = $".(count($params)+1);
    $params[] = $cadastro;
}

if (isset($trabalha)) {
    $where[] = "z01_trabalha = $".(count($params)+1);
    $params[] = $trabalha;
}

if (isset($renda) && $renda !== '' && $renda !== null) {
    $where[] = "z01_renda >= $".(count($params)+1);
    $params[] = $renda;
}

$sql = "SELECT * FROM cgm";
if (count($where) > 0) {
    $sql .= " WHERE " . implode(" AND ", $where);
}

$rs = db_query_params($sql, $params);

Saída do exemplo dinâmico :  SELECT * FROM cgm WHERE z01_nome ILIKE 'Carlos%' AND z01_trabalha = true AND z01_renda >= 1000.00