[RESOLVIDO] SQL Builder gera SQL com sucesso, mas blank aponta erro

Prezado(a)s, bom dia

Montei uma query no SQL Builder e executa normalmente (MS Sql). Observei que ele colocou " nos campos da tabela que iniciam com números (Já veio assim do cliente).

SELECT
   "011_DH".Nome
FROM
   dbo.INI_Iniciativas_DH INNER JOIN dbo."011_DH" ON INI_Iniciativas_DH.IDDH = "011_DH".IDDH
WHERE 
   (dbo.INI_Iniciativas_DH.IDIniciativa = '0a608b2a-67db-45f5-a014-3bec03319657')

Agora quando jogo no meu blank, ele não encontra o registro e aponta erro no sql.
Já tentei substituir " por ’ , ` e nada.

Meu código:

$sql = 'SELECT
   "011_DH".Nome
FROM
   dbo.INI_Iniciativas_DH INNER JOIN dbo."011_DH" ON INI_Iniciativas_DH.IDDH = "011_DH".IDDH
WHERE 
   (dbo.INI_Iniciativas_DH.IDIniciativa = "'.$_iniciativas.'")';

Gratidão

Luis Gustavo Leal

não se cria nome de colunas iniciando por número
tem que tirar as aspas.

1 Curtida

Eu sei, mas já veio do cliente as tabelas criadas.
Sem " " não funciona tbm, já tentei.

PS: Se eu criar uma Grid nessa tabela funciona, penso que seja algum BUG do blank. :confused:

crie uma view no banco renomeando essas colunas e utilize a view.

1 Curtida

Boa, vou testar isso.

Boas, consegui encontrar a solução. Basta utilizar ‘back-tick’ ou ‘back-quote’ como exemplo abaixo:

O mecanismo SQL padrão para citar identificadores é com identificadores delimitados entre aspas duplas:

SELECT "select" FROM "from" WHERE "where" = "group by";

No MySQL, isso pode ser escrito:

SELECT `select` FROM `from` WHERE `where` = `group by`;

No MS SQL Server, isso pode ser escrito:

SELECT [select] FROM [from] WHERE [where] = [group by];

Então meu SQL ficou assim:

$sql = "SELECT
   [010_OGD].Nome,
   [010_OGD].Descricao,
   [010_OGD].Imagem
FROM
   dbo.INI_Iniciativas_OGD INNER JOIN dbo.[010_OGD] ON INI_Iniciativas_OGD.IDOGD = [010_OGD].IDOGB
WHERE 
   (dbo.INI_Iniciativas_OGD.IDIniciativa = '".$_iniciativas."')";

Abraço.

Luis Gustavo Leal

1 Curtida