Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Coluna desconhecida na lista de campos


É porque seu
VALUES (%s,%s)

não está cercando o conteúdo da variável namee e family por aspas. Portanto, seu mecanismo Sql de back-end pensa que seu mohsen é um nome de coluna, não um valor.

Em vez disso, use, por exemplo,
VALUES (''%s'',''%s'')

como em
  Namee := 'mohsen';
  Family := 'dolatshah';
  aSQLText:= 'INSERT INTO b_tbl(Name,Family) VALUES (''%s'',''%s'')';
  aSQLCommand := Format(aSQLText,[namee,family]);

Na versão original da minha resposta, expliquei como resolver seu problema "dobrando" aspas simples no Sql que você estava tentando construir, porque me parecia que você estava tendo dificuldade em ver (literalmente) o que estava errado com o que você estava fazendo.

Uma maneira alternativa (e melhor) de evitar seu problema (e a que sempre uso na vida real) é usar o QuotedStr() função. O mesmo código se tornaria então
aSQLText := 'INSERT INTO b_tbl (Name, Family) VALUES (%s, %s)'; 
aSQLCommand := Format(aSQLText, [QuotedStr(namee), QuotedStr(family)]);

De acordo com a Ajuda Online:

O que significa "repetido" é o que eu chamo de "dobrar". Por que isso é importante, e o principal motivo pelo qual eu uso QuotedStr é evitar que o mecanismo de banco de dados Sql gere um erro quando o valor que você deseja enviar contém um caractere de aspas simples como em O'Reilly .

Tente adicionar uma linha contendo esse nome à sua tabela usando o MySql Workbench e você verá o que quero dizer.

Portanto, o uso de QuotedStr não apenas torna a construção de instruções SQL como strings no código Delphi menos propensa a erros, mas também evita problemas no back-end.