Adicionalmente a eso, hay un error de construcción que se percibe en el mensaje de error.
Cuando poner un IN(), los valores deben quedar separados por comas, pero no de esta forma:
Código SQL:
Ver originalDELETE FROM user_badges
WHERE user_id='23' AND product_id IN ('126, 127')
Esa sintaxis asume que PRODUCT_ID es un campo VARCHAR que contendrá valores como "126,127", es decir una cadena de texto con los dos números con una coma intermedia, y francamente no creo que sea el caso.
Quítale los apóstrofos...
Consejo: Los valores números no necesitan apóstrofos cuando los pones en SQL, a menos que sea para comparar contra campos VARCHAR.
La sintaxis correcta asía:
que podrá dar un resultado mas o menos así (es un ejemplo imaginario):
Código SQL:
Ver originalDELETE FROM user_badges
WHERE user_id = 23 AND product_id IN (126, 127)
Eso podrá hacer que si un valor no está llegando en una de as variables a la query se dispare un error de sintaxis, pero ese error te puede indicar precisamente que hay una variable vacía... Lo que es bueno para depurar.