MYSQL-准备stmt并执行stmt和在何处添加等

MYSQL-准备stmt并执行stmt和在何处添加等,mysql,Mysql,我正在尝试构建下一个存储过程,但它不起作用 PREPARE STMT FROM 'SELECT a, b, c, d, e FROM TABLE_1 WHERE (`a` like `%?%` OR `b` like `%?%` OR `c` like `%?%` OR `d` like `%?%` OR `e` like `%?%`) LIMIT ?, ?'; EXECUTE STMT USING @search, @skip, @rows; 基本上,我试图在其中一列中搜索一个字符串,并返回

我正在尝试构建下一个存储过程,但它不起作用

PREPARE STMT FROM 'SELECT a, b, c, d, e FROM TABLE_1 WHERE (`a` like `%?%` OR `b` like `%?%` OR `c` like `%?%` OR `d` like `%?%` OR `e` like `%?%`) LIMIT ?, ?';
EXECUTE STMT USING @search, @skip, @rows;
基本上,我试图在其中一列中搜索一个字符串,并返回符合条件的列所在的行。 请帮助我修复它,因为我将遇到下一个错误:

Unknown column '%?%' in 'where clause'

这是因为有多少人?应等于使用子句后的参数数。你也给出了错误的报价?尝试以下操作,而不是
“?”

PREPARE STMT FROM 'SELECT a, b, c, d, e FROM TABLE_1 WHERE (`a` like "%?%" OR `b` like "%?%" OR `c` like "%?%" OR `d` like "%?%" OR `e` like "%?%") LIMIT ?, ?';

EXECUTE STMT USING @search, @search, @search, @search, @search, @skip, @rows;
或尝试

SET @query1 = CONCAT('
    SELECT SQL_CALC_FOUND_ROWS a, b, c, d, e
    FROM TABLE_1
    WHERE (`a` like "%',@search,'%" OR
        `b` like "%',@search,'%" OR
        `c` like "%',@search,'%" OR
        `d` like "%',@search,'%" OR
        `e` like "%',@search,'%")
    LIMIT ',@skip,', ',@rows,'');

    PREPARE stmt FROM @query1; 
    EXECUTE stmt; 
    SELECT FOUND_ROWS() AS total_rows;
    DEALLOCATE PREPARE stmt;

mysql上的示例似乎显示问号的计数 参数的计数是否应该类似

我错了吗

在您的例子中,这意味着七个问号和七个参数

祝你万事如意

试试这个

PREPARE STMT FROM 'SELECT a, b, c, d, e FROM TABLE_1 WHERE (`a` like "%?%" OR `b` like "%?%" OR `c` like "%?%" OR `d` like "%?%" OR `e` like "%?%") LIMIT ?, ?';

EXECUTE STMT USING @search, @search, @search, @search, @search, @skip, @rows;
注意

变量的数量应该等于我们的问号的数量


你有7个问号,只有3个变量。因此,第四个

的错误出现在更改之后,我得到了错误“要执行的参数不正确”我可以在同一次执行中计算行数吗?或者我如何在只计算行数的情况下再次调用它?编辑:在select和执行查询后添加SQL\u CALC\u FOUND\u rows,并使用MySQL函数获取总记录。FOUND\u rows()变量数应等于问号数。。。