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()变量数应等于问号数。。。