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