Delphi Mysql参数使用整数而不是字符串

时间:2015-06-17 07:03:15

标签: mysql delphi

我在下面创建了一个过滤命令。但它只适用于整数字段。似乎只要字段是字符串就不起作用......

我不断得到的错误是'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;

1 个答案:

答案 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变量不包含带引号的字符串,而只是要过滤的列的名称...