Php 比如不在存储过程中工作

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

我已经使用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=",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'