Estou fazendo uma consulta com o pdo usando o operador... so q n funciona... a consulta n fica formatada de forma correta....
$cgc é um array de checkbox q vem no seguinte formato:
[0]=>unidade1
[1]=>unidade2
[2]=>unidade3
[3]=>unidade4
public function findUnidadeVinculada($cgc){
$sql = "SELECT c.numero_contrato, c.excluido, uc.unidade FROM contrato_unidade as uc
INNER JOIN contratos AS c ON uc.contrato = c.id_contrato
WHERE c.excluido = 'NAO' AND uc.unidade in (select cgc from unidades where cgc in(:cgc))
LIMIT 1";
$stmt = $this->con->prepare($sql);
$stmt->execute(($cgc));
$result = $stmt->fetch(PDO::FETCH_ASSOC);
return $result;
}
se puderam ajudar fico grato.
-----------------------------
seria so trocar o ':cgc' por '?'
Infelizmente, "é a vida".
Você pode usar a função array_fill para "preencher" os marked placeholders.
Segue:
$quantidade = count($cgc);
$markedPlaceholders = array_fill(0 , $quantidade , '?');
$markedPlaceholders = implode(',' , $markedPlaceholders);
Com esse pequeno código acima, você possuirá a quantidade adequada de marked placeholders. Basta inserir no SQL.
$statement = $pdo->prepare('SELCT * FROM tabela WHERE id IN ('.$markedPlaceholders.');');