2016-10-14 4 views
0

私はcodeigniterのプロジェクトに取り組んでいます。 私はモデルからストアドプロデューサを呼び出し、それに配列を送信したいと思う。 私はメソッドを呼び出すときにエラーメッセージが表示されます。配列をストアドプロデューサのcodeigniterに送信します。 #1241 - オペランドには1つの列が含まれていなければなりません

この呼び出しの私の目標は、特別なカテゴリのリストにある製品のリストを取得することです。

はここに私のコール・エスピー

CALL Get_Products_List('',('1000','9UKXYZj4M2F5yN'),'','','','','','','','','','','','10',0,'code','Asc') 

、ここでは私の得たエラーです。

1241 - オペランドが1列(複数可)

DELIMITER $$ 

CREATE DEFINER=`root`@`localhost` PROCEDURE `Get_Products_List`(
IN `id` VARCHAR(14), IN `p_c_id` longtext, IN `code` VARCHAR(20) 
, IN `model` VARCHAR(100), IN `name` VARCHAR(100), IN `price` VARCHAR(10) 
, IN `price_unit` VARCHAR(14), IN `in_stock` VARCHAR(14), IN `is_special` VARCHAR(14) 
, IN `is_new` VARCHAR(14), IN `has_warranty` VARCHAR(14), IN `b_id` VARCHAR(14) 
, IN `product_type` VARCHAR(14), IN `psize` INT 
, IN `ofset` INT, IN `order_by` VARCHAR(100), IN `order_by_sort` VARCHAR(10)) 
    NO SQL 
BEGIN 
SET @order_by_sort = UPPER(order_by_sort); 

SELECT p.id,Get_Post_Score_Sum('1603',p.id) as average_score,ifnull(pc.name,'ندارد') as category_name,p.code,p.model,p.name,p.price,p.image,p.image_thumb 
,ifnull(t1.name,'ندارد') as price_unit,p.discount,ifnull(t2.name,'ندارد') as in_stock 
,ifnull(t3.name,'ندارد') as is_special,ifnull(t4.name,'ندارد') as is_new 
,ifnull(t5.name,'ندارد') as has_warranty,ifnull(t6.name,'ندارد') as product_type 
,ifnull(b.name,'ندارد') as brand_name 
,p.registered_date 
FROM tbl_product as p 
inner join tbl_product_category as pc on p.p_c_id=pc.id 
inner join tbl_baseinfo as t1 on p.price_unit=t1.id 
inner join tbl_baseinfo as t2 on p.in_stock=t2.id 
inner join tbl_baseinfo as t3 on p.is_special=t3.id 
inner join tbl_baseinfo as t4 on p.is_new=t4.id 
inner join tbl_baseinfo as t5 on p.has_warranty=t5.id 
inner join tbl_baseinfo as t6 on p.product_type=t6.id 
inner join tbl_brand as b on p.b_id=b.id 
where p.p_c_id in (p_c_id) 
and p.code LIKE CONCAT('%', code , '%') 
and p.model like CONCAT('%', model , '%') and p.name LIKE CONCAT('%', name , '%') 
and p.price like CONCAT('%', price , '%') and p.price_unit LIKE CONCAT('%', price_unit , '%') 
and p.in_stock like CONCAT('%', in_stock , '%') and p.is_special LIKE CONCAT('%', is_special , '%') 
and p.b_id like CONCAT('%', b_id , '%') and p.product_type LIKE CONCAT('%', product_type , '%') 
order by 
CASE WHEN order_by = 'category_name' AND @order_by_sort = 'ASC' THEN p.p_c_id END ASC, 
CASE WHEN order_by = 'code' AND @order_by_sort = 'ASC' THEN p.code END ASC, 
CASE WHEN order_by = 'model' AND @order_by_sort = 'ASC' THEN p.model END ASC, 
CASE WHEN order_by = 'name' AND @order_by_sort = 'ASC' THEN p.name END ASC, 
CASE WHEN order_by = 'price' AND @order_by_sort = 'ASC' THEN p.price END ASC, 
CASE WHEN order_by = 'price_unit' AND @order_by_sort = 'ASC' THEN p.price_unit END ASC, 
CASE WHEN order_by = 'discount' AND @order_by_sort = 'ASC' THEN p.discount END ASC, 
CASE WHEN order_by = 'in_stock' AND @order_by_sort = 'ASC' THEN p.in_stock END ASC, 
CASE WHEN order_by = 'is_special' AND @order_by_sort = 'ASC' THEN p.is_special END ASC, 
CASE WHEN order_by = 'is_new' AND @order_by_sort = 'ASC' THEN p.is_new END ASC, 
CASE WHEN order_by = 'has_warranty' AND @order_by_sort = 'ASC' THEN p.has_warranty END ASC, 
CASE WHEN order_by = 'product_type' AND @order_by_sort = 'ASC' THEN p.product_type END ASC, 
CASE WHEN order_by = 'brand_name' AND @order_by_sort = 'ASC' THEN p.b_id END ASC, 
CASE WHEN order_by = 'registered_date' AND @order_by_sort = 'ASC' THEN p.registered_date END ASC, 
CASE WHEN order_by = 'category_name' AND @order_by_sort = 'DESC' THEN p.p_c_id END DESC, 
CASE WHEN order_by = 'code' AND @order_by_sort = 'DESC' THEN p.code END DESC, 
CASE WHEN order_by = 'model' AND @order_by_sort = 'DESC' THEN p.model END DESC, 
CASE WHEN order_by = 'name' AND @order_by_sort = 'DESC' THEN p.name END DESC, 
CASE WHEN order_by = 'price' AND @order_by_sort = 'DESC' THEN p.price END DESC, 
CASE WHEN order_by = 'price_unit' AND @order_by_sort = 'DESC' THEN p.price_unit END DESC, 
CASE WHEN order_by = 'discount' AND @order_by_sort = 'DESC' THEN p.discount END DESC, 
CASE WHEN order_by = 'in_stock' AND @order_by_sort = 'DESC' THEN p.in_stock END DESC, 
CASE WHEN order_by = 'is_special' AND @order_by_sort = 'DESC' THEN p.is_special END DESC, 
CASE WHEN order_by = 'is_new' AND @order_by_sort = 'DESC' THEN p.is_new END DESC, 
CASE WHEN order_by = 'has_warranty' AND @order_by_sort = 'DESC' THEN p.has_warranty END DESC, 
CASE WHEN order_by = 'product_type' AND @order_by_sort = 'DESC' THEN p.product_type END DESC, 
CASE WHEN order_by = 'brand_name' AND @order_by_sort = 'DESC' THEN p.b_id END DESC, 
CASE WHEN order_by = 'registered_date' AND @order_by_sort = 'DESC' THEN p.registered_date END DESC 


LIMIT psize OFFSET ofset; 

END 

答えて

0

が含まれている必要がありますこれはPHPではありませんかCodeigniterエラー。 SQLクエリを確認する必要があります。

関連する問題