我只是创建一个stored procedure
像这样的Scorer
parameter
https://nginx.org/en/docs/http/ngx_http_upstream_module.html#upstream
这是Stored procedure
的定义
BEGIN
set @inser = CONCAT('INSERT INTO activity8',' (ActivityType,ActivityChapter,ActivitySubject,ActivityClass,Student) VALUES (',Type,',',Chapter,',',Subject,',',Class,',',Student,')');
prepare stmt from @inser;
execute stmt ;
End
这是activity8表的表结构
现在我打电话给CALL Scorer('d',2,5,7,38)
为什么会给出错误#1054 - Unknown column 'd' in 'field list'
修改
当我做CALL Scorer('"d"',2,5,7,38)
或CALL Scorer("'d'",2,5,7,38)
时,任何人都可以解释为什么吗?
答案 0 :(得分:1)
如果您的数据属于varchar
类型,并且您正在使用CONCAT
来构建查询,那么它将不能使用单引号,因为您在执行操作时已经看到了
set @inser = CONCAT('INSERT INTO activity8',' (ActivityType,ActivityChapter,ActivitySubject,ActivityClass,Student) VALUES (',Type,',',Chapter,',',Subject,',',Class,',',Student,')');
当您CALL Scorer('d',2,5,7,38);
这意味着您的查询是
@inser = INSERT INTO activity8 (ActivityType,ActivityChapter,ActivitySubject,ActivityClass,Student) VALUES
(d,2,5,7,38)
这是您的查询内容,您的varchar
类型值d
不带引号
CONCAT
本身消耗了一个报价
何时准备对帐单
prepare stmt from @inser;
execute stmt ;
您的varchar
值'd'
将不带引号
所以您必须像这样varchar paramter
放入"'d'" or '"d"'
concat
的一个引号和查询本身的另一个引号
答案 1 :(得分:0)
尝试在d上使用双引号。
CALL Scorer("d",2,5,7,38)
我认为这应该对您有所帮助。
答案 2 :(得分:0)