En PHP el operador para poner la condición de si un valor es igual a otro es "==", no "=".
En MySQL el operador de la condición de igualdad para el WHERE de un SELECT si que es "=".
No tengo claro si el tipo de campo de la tabla no te va a poner problemas por utilizar apostrofes en los que son de tipo numérico. Por hábito siempre pongo los valores con los formatos que conozco como "más correctos".
Para agregar condiciones a un "select" en función de si se recibieron o no valores para hacer los filtros en la consulta te pongo un ejemplo en PHP
Código PHP:
Ver original<?php
// Función para agregar apóstrofes.
// OJO: Puede que tengas que mejorarla para que devuelva "NULL" cuando $valor este vacía.
function scm($valor)
{
return '\''.$valor.'\'';
}
// Función para agregar condiciones al pedazo del WHERE
function addToWhere(&$xwhere, $condicion)
{
if ($xwhere == '') $xwhere = ' where ';
else $xwhere .= ' and ';
$xwhere .= $condicion;
}
// Variables donde se meten los valores de los filtros que se pueden llegar a recibir
$filtroDescripcion = 'FILTRO 1';
$filtroID = '1';
// Parte principal del SELECT
$qry = 'select Id_Item, Descripcion from TABLA';
// Inicialización de variable para poner el WHERE
$xwhere = '';
// Por cada filtro posible, se agrega una condicón y si procede, se agrega al WHERE
if ($filtroID != '') addToWhere ($xwhere, 'Id_Item = '.$filtroID);
if ($filtroDescripcion != '') addToWhere ($xwhere, 'Descripcion = '.scm($filtroDescripcion));
// Se concatena el WHERE a la parte principal del SELECT
// OJO: SI no se recibieron filtros, el SELECT ira sin WHERE.
$qry .= $xwhere.';';
// Para verificar que la sentencia es correcta, se muestra en la página,
// se copia y se prueba desde phpMyAdmin o lo que sea que utilices para hacer consultas directamente en la base de datos.
echo $qry;
return;
?>