Php 比如不在存储过程中工作
我已经使用like操作符编写了存储过程,但是我得到了mysql的错误。 我的问题是:Php 比如不在存储过程中工作,php,mysql,database,stored-procedures,Php,Mysql,Database,Stored Procedures,我已经使用like操作符编写了存储过程,但是我得到了mysql的错误。 我的问题是: CREATE DEFINER=`ecp`@`localhost` PROCEDURE `sp_getTier4CatBanner`(pSiteid int,pTier4 varchar(100)) BEGIN SET @SS = CONCAT("SELECT * FROM `categorybanners` WHERE TIERCODES LIKE %",pTier4,"%"," and SITEID
CREATE DEFINER=`ecp`@`localhost` PROCEDURE `sp_getTier4CatBanner`(pSiteid int,pTier4 varchar(100))
BEGIN
SET @SS = CONCAT("SELECT * FROM `categorybanners` WHERE TIERCODES LIKE %",pTier4,"%"," and SITEID=",pSiteid," and CATLEVEL='tire4'");
PREPARE STMT FROM @SS;
END
打印查询时,我得到以下结果:
SELECT * FROM `categorybanners` WHERE TIERCODES LIKE %t2_05% and SITEID=46 and CATLEVEL='tire4'
错误的主要原因是缺少%t2\u 05%
中的单引号。
请让我知道如何使用单引号,以使查询如下所示:
SELECT * FROM `categorybanners` WHERE TIERCODES LIKE '%t2_05%' and SITEID=46 and CATLEVEL='tire4'
只需将单引号放在第一个%的前面和最后一个%的后面即可:
SET @SS = CONCAT("SELECT * FROM `categorybanners` WHERE TIERCODES LIKE '%",pTier4,"%'"," and SITEID=",pSiteid," and CATLEVEL='tire4'");
因此,您的声明变成:
SELECT * FROM categorybanners WHERE TIERCODES LIKE '%t2_05%' and SITEID=46 and CATLEVEL='tire4'