Mysql多次使用同一参数准备语句

Mysql多次使用同一参数准备语句,mysql,sql,Mysql,Sql,我编写了如下存储过程: DELIMITER $$ CREATE PROCEDURE searchByTerm(term VARCHAR(300)) BEGIN SET @statment = "Select name,description from products where name like '%?%' OR description like '%?%'"; PREPARE stmt FROM @statment; SET @a = term;

我编写了如下存储过程:

  DELIMITER $$
   CREATE PROCEDURE searchByTerm(term VARCHAR(300))
    BEGIN
    SET @statment = "Select name,description from products where name like '%?%' OR description like '%?%'";
    PREPARE stmt FROM @statment;
    SET @a = term;
    SET @b = term;
    EXECUTE stmt USING @a,@b;
    DEALLOCATE PREPARE stmt; 
  END$$
称之为:

CALL searchByTerm('xyz');
它会导致以下错误:

Error Code : 1210
Incorrect arguments to EXECUTE
我做错什么了吗?我知道可以用concat语句完成,但为什么它不能像这样工作呢?我不能多次使用同一个参数吗?感谢您的帮助。

在查询中使用

SET @statment = "Select name,description 
                 from products 
                 where name like CONCAT('%', ? ,'%') OR 
                       description like CONCAT('%', ? ,'%')";
所以您的完整查询将如下所示

DELIMITER $$
CREATE PROCEDURE searchByTerm(term VARCHAR(300))
  BEGIN
    SET @statment = "Select name,description 
                     from products 
                     where name like CONCAT('%', ? ,'%') OR 
                           description like CONCAT('%', ? ,'%')";
    PREPARE stmt FROM @statment;
    SET @a = term;
    SET @b = term;
    EXECUTE stmt USING @a,@b;
    DEALLOCATE PREPARE stmt; 
  END$$

伟大的它工作了…很多谢谢:这真的是一个愚蠢的错误,我没有考虑“?”作为字符串的一部分。