Query com valores nulos?

Estou com um problema em uma Query e gostaria de uma luz, tenho uma classe de produtos e nesse produto tenho duas clausulas booleanas que são promoção e pronta entrega, e estou quebrando a cabeça para montar o select, pois o produto pode ser pronta entrega OU promoção, ou pronta entrega E promoção, ou nenhum dos dois, apenas o produto pela categoria dele. Tentei algumas query com IS NULL, mas ou ele retorna todos os registros ou nenhum.

Se alguém já passou por isso, ficaria grato por uma mãozinha.

Você tem o código que a gente possa ver e entender o que pode está ocorrendo?

1 curtida
$pdo = $this->con->conecta();
$buscaProduto = $pdo->prepare("SELECT p.id, p.nome FROM produtos AS p WHERE categorias_id = :categorias_id AND promocao = :promocao AND prontaentrega = :prontaentrega;");
$buscaProduto->bindValue(":categorias_id", $this->categorias_id, PDO::PARAM_INT);
$buscaProduto->bindValue(":promocao", $this->promocao);
$buscaProduto->bindValue(":prontaentrega", $this->prontaentrega);
$buscaProduto->execute();
$resultado = $buscaProduto->fetchAll(PDO::FETCH_ASSOC);

O problema é que eu precisaria que quando não fosse passado os parâmetros promoção e pronta entrega, ele chamasse todos os produtos, tanto promoção quanto pronta entrega, e assim cada vez que eu preenchesse os parâmetro ele me trouxesse o que preciso, como se fosse uma query “genérica”. Não sei se consegui ser claro.

BOm dia amigo, não comheço nada de php, porém acho que entendi teu problema, vc poderia montar uma string query dinamica

tipo

$query = "";

if(promocao && prontaEntrega)
   $query = "faça a query de todos os produtos";
else
 $sql = "faça a query com restrições"

aqui vc executa a query(não conheço php mas acho que é fetchAll)