我在下面创建了一个过滤命令。但它只适用于整数字段。似乎只要字段是字符串就不起作用......
我不断得到的错误是'SQL Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'like'%a%''at line 1'
我的代码如下:
datalive.mail_queue.SQL.Text:='select*from mail_queue where user_id=:user_id and '+fieldname+' like :value';
Addparam(datalive.mail_queue,'user_id',ftString,inttostr(user_id));
Addparam(datalive.mail_queue,'fieldname',ftString,fieldname);
Addparam(datalive.mail_queue,'value',ftString,'%'+edit1.Text+'%');
datalive.mail_queue.Active:=true;
答案 0 :(得分:1)
问题似乎在你的查询字符串中,在传递连接字符串的参数之前,所以我建议你以这种方式更改你的查询字符串:
datalive.mail_queue.SQL.Text:=' select * from mail_queue where user_id=:user_id and '+fieldname+' like :value';
您不必传递参数fieldname
,因为它是一列而不是一个值:
Addparam(datalive.mail_queue,'user_id',ftString,inttostr(user_id));
Addparam(datalive.mail_queue,'value',ftString,'%'+edit1.Text+'%');
请确保fieldname
变量不包含带引号的字符串,而只是要过滤的列的名称...