Cita: pero cuando se ejecuta desde php me funciona todo menos el BETWEEN
Eso, en principio, podría deberse a errores de programación (tema off topic en este foro), por lo que no podemos decirte por qué.
Además, no nos estás diciendo gran cosa cuando expresas "me funciona todo menos...".
¿No te funciona qué? ¿No devuelve datos? ¿Retorna un error de MySQL?
Si no devuelve datos, en el 99%99 de los casos es porque usaste variables que no contienen lo que tu supones que contienen (no exagero, el 99% de los casos que nos pregunta termina siendo eso).
Si no devuelve los datos
esperados, entonces los parámetros son incorrectos (puede que las variables tengan la culpa), o bien no hay datos que cumplan lo que pides, cosa que sería un error de datos, y no de SQL.
Ahora bien, analizando la query, lo que yo veo es que tienes demasiadas condiciones LIKE, lo que me lleva a pensar en que es una consulta ineficiente.
No es recomendable hacer una consulta multiple de ese tipo, son propensas a traer mucha basura.
Pero es tu decisión.
Lo que si no me queda claro es qué se supone que queda armado en esta parte:
PD: Te recomiendo escribir las consultas de una forma estructurada, para que sean más fáciles de analizar y ver los erroes:
Código SQL:
Ver originalSELECT
codigo,
grupo,
familia,
marca,
precio, ROUND(precio*40/100+precio,1) precio2,
stock, nombre,
CONCAT( SUBSTRING( caracteristicas, 1, 900 ) , '...' ) caracter,
IF( imagen = '', 'http://www.fincasviladecans.com/img/no-imagen.jpg', imagen) imagen
FROM
Productos
WHERE
Productos.precio $precio
AND familia LIKE '%".$busqueda."'
OR familia LIKE '%".$busqueda."%'
OR familia LIKE '".$busqueda."'
OR marca LIKE '%".$busqueda."'
OR marca LIKE '%".$busqueda."%'
OR marca LIKE '".$busqueda."'
OR nombre LIKE '%".$busqueda."'
OR nombre LIKE '%".$busqueda."%'
OR nombre LIKE '".$busqueda."'
LIMIT $inicio, $filasxpagina