mysql UPDATE, does not get the value of the function in PHP

0

I have this function:

$id = pega_assunto_por_nome_menu($_GET['assunto'])['id'];

That returns the value of the id, if I use echo $id; But when I do the update in mysql, it does not work.

This error appears:

  

You have an error in your SQL syntax; check the manual that   correspond to your MySQL server version for the right syntax to use   near '' at line 3

Line six is the definition of id = {$id};

$atualiza = "UPDATE assuntos SET
            nome_menu = '{$nome_menu}'
            WHERE id = {$id}";

If you use var_dump, this is the result.

$assunto = pega_assunto_por_nome_menu($_GET['assunto']);
var_dump($assunto); 

array (size=10)
  0 => string '1' (length=1)
  'id' => string '1' (length=1)
  1 => string 'Sobre a Preliminartes' (length=21)
  'nome_menu' => string 'Sobre a Preliminartes' (length=21)
  2 => string 'sobre_a_preliminarte' (length=20)
  'nome_menu_slug' => string 'sobre_a_preliminarte' (length=20)
  3 => string '1' (length=1)
  'posicao' => string '1' (length=1)
  4 => string '1' (length=1)
  'visivel' => string '1' (length=1)
    
asked by anonymous 10.06.2015 / 08:04

3 answers

1

(ALWAYS) Validate the variables before performing any database operation:

// Valida se a variável está vazia
if (empty($_GET['assunto']))
  die('Assunto não informado.');

// Recebe todos os dados da função
$assunto = pega_assunto_por_nome_menu($_GET['assunto']);

// Verifica se recebeu algum ID da função anterior
if (empty($assunto) || empty($assunto['id']))
  die('Nenhum resultado encontrado.');

// ¬¬
$id = $assunto['id'];

// Dependendo de onde você recebe essa variável é bom valida-la também
$nome_menu = filter_var($_GET['nome_menu']); // Caso a validação falhe, será retornado FALSE

// Verifica se a string  filtrada é valida
if ($nome_menu === FALSE)
   die('Nome inválido.');

$atualiza = "UPDATE assuntos SET
        nome_menu = '{$nome_menu}'
        WHERE id = {$id}";
    
10.06.2015 / 14:27
0

Change this line: $id = pega_assunto_por_nome_menu($_GET['assunto'])['id'];

By this line: $id = pega_assunto_por_nome_menu($_GET['assunto']['id']);

    
10.06.2015 / 08:05
0

Hello, your function has to be returning something ... return $algo; . If your application is the way you went, it will not work, the ID index is outside the function parameter. Change this:

$id = pega_assunto_por_nome_menu($_GET['assunto'])['id'];

so:

$id = pega_assunto_por_nome_menu($_GET['assunto']['id']);

Then having the value inside the variable $ id, debug the same: var_dump($id); to check.

    
10.06.2015 / 13:41