PHP: PDO não reconhece as variáveis.
Percebi que meu PDO não tem reconhecido as variáveis que eu passo ao montar a minha query.
1. Estou montando a query em uma string e concatenando as variáveis;
2. Ao debugar a montagem da query percebo que ela é montada normalmente, com todos os dados que eu concatenei;
3. Ao rodar o execute na query ela ignora todas as variáveis da query;
ps: Já tentei fazer bind de diversas maneiras e nada funcinou.
Algumas fatos:
Quando faço var_dump no prepare da query testo diretamente no bd a query é executada normalmente.
O erro que o PHP manda para o log é o seguinte:
<Exception: SQLSTATE[42000]: Syntax error or access violation: 1064 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 'WHERE IDBANHO =' at line 1>
Versões:
PHP 7.4.3
MySQL Ver 8.0.21-0ubuntu0.20.04.4 for Linux on x86_64
PDO Driver MySQL mysqlnd 7.4.3
Alguém já teve algum problema parecido?
1. Estou montando a query em uma string e concatenando as variáveis;
2. Ao debugar a montagem da query percebo que ela é montada normalmente, com todos os dados que eu concatenei;
3. Ao rodar o execute na query ela ignora todas as variáveis da query;
ps: Já tentei fazer bind de diversas maneiras e nada funcinou.
$input = json_decode(file_get_contents("php://input")); $primary_key = $input->id; $dado1 = $input->dado1; $dado2 = $input->dado2; try { $query = $pdo->prepare('UPDATE tabela SET campo_$dado1 = $dado2 WHERE id = $primary_key'); $result = $query->execute( ); } catch (PDOStatement $e) { return $e->getMessage(); }
Algumas fatos:
Quando faço var_dump no prepare da query testo diretamente no bd a query é executada normalmente.
O erro que o PHP manda para o log é o seguinte:
<Exception: SQLSTATE[42000]: Syntax error or access violation: 1064 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 'WHERE IDBANHO =' at line 1>
Versões:
PHP 7.4.3
MySQL Ver 8.0.21-0ubuntu0.20.04.4 for Linux on x86_64
PDO Driver MySQL mysqlnd 7.4.3
Alguém já teve algum problema parecido?
Mateus Vitor
Curtidas 0
Melhor post
Alex William
27/10/2020
Olá amigo, tudo bem?
Deixe sua query assim:
Quando voce utiliza aspas simples no PHP ele entende o texto literalmente, ou seja, se voce usar campo_$dado1 ele vai montar uma string "campo_$dado1".
Se voce utlizar aspas duplas, ele vai pegar os valores das variaveis que voce colocar dentro dessas aspas, logo o campo_$dado1 vai ficar "campo_xxxxx" sendo xxxx o valor da variavel.
Teste e me mande se funcionou.
Espero ter ajudado. ;D
Deixe sua query assim:
$query = $pdo->prepare("UPDATE tabela SET campo_$dado1 = '$dado2' WHERE id = $primary_key");
Quando voce utiliza aspas simples no PHP ele entende o texto literalmente, ou seja, se voce usar campo_$dado1 ele vai montar uma string "campo_$dado1".
Se voce utlizar aspas duplas, ele vai pegar os valores das variaveis que voce colocar dentro dessas aspas, logo o campo_$dado1 vai ficar "campo_xxxxx" sendo xxxx o valor da variavel.
Teste e me mande se funcionou.
Espero ter ajudado. ;D
GOSTEI 1