Ver Mensaje Individual
  #2 (permalink)  
Antiguo 17/11/2013, 07:33
wchiquito
 
Fecha de Ingreso: junio-2011
Mensajes: 139
Antigüedad: 12 años, 10 meses
Puntos: 42
Respuesta: Problema con param en cláusula IN() en sentencia preparada

Hola Josio,

Al hacer:
Código MySQL:
Ver original
  1. SET @a = 1;
  2. SET @b = '225,226,227,228';
  3. SET @c = 0;
  4. SET @d = 4;
  5.  
  6. SET @query = '
  7.    SELECT *
  8.    FROM vw_Contents
  9.    WHERE idSite = ?
  10.    AND categoryId IN (?)
  11.    ORDER BY title
  12.    LIMIT ?,?';
quedaría una consulta como la siguiente:
Código MySQL:
Ver original
  1. FROM vw_Contents
  2. WHERE idSite = 1
  3. AND categoryId IN ('225,226,227,228')
  4. ORDER BY title
  5. LIMIT 0,4;
Lo cual, efectivamente, retornaría probablemente un (1) registro como resultado.

Una opción es:
Código MySQL:
Ver original
  1. SET @query = CONCAT('
  2.    SELECT *
  3.    FROM vw_Contents
  4.    WHERE idSite = ?
  5.    AND categoryId IN (', @b, ')
  6.    ORDER BY title
  7.    LIMIT ?,?');
  8.  
  9. PREPARE stmt FROM @query;
  10. EXECUTE stmt USING @a, @c, @d;
  11. DEALLOCATE PREPARE stmt;
La consulta quedaría, algo como:
Código MySQL:
Ver original
  1. FROM vw_Contents
  2. WHERE idSite = 1
  3. AND categoryId IN (225,226,227,228)
  4. ORDER BY title
  5. LIMIT 0,4;